Настройте значок текущего местоположения с помощью карт ЗДЕСЬ

Существуют ли API-интерфейсы для изменения внешнего вида значка текущего местоположения, используемого во время навигации. Мне удалось изменить его с помощью пользовательского маркера карты и обновить позицию с помощью обратных вызовов менеджера позиции, но мне интересно, есть ли более простой способ. Также не было ясно, как я мог изменить заголовок значка (я заменяю круг стрелкой). Я хотел бы иметь возможность вращать стрелку соответствующим образом во время маневров. Похоже, что приложение HERE делает такие вещи, поэтому мне интересно, представлен ли какой-либо из этих API в SDK.

3 ответа

Решение

Обычно мы рекомендуем разработчикам создавать свои собственные индикаторы положения с помощью API-интерфейсов MapMarker или MapLocalModel. У нас слишком много вариантов настройки, чтобы сделать общий индикатор позиции:)

Пожалуйста, создайте объект карты и настройте поведение, необходимое для вашего приложения.

Создать объект изображения

try
{
    Image image = new Image ();
    Bitmap icon = BitmapFactory.decodeResource(getResources(), R.drawable.store_pin);
    Bitmap scaledBitmap = Utility.scaleDown (icon, 150, true);
    image.setBitmap (scaledBitmap);
    customMarker = new MapMarker (new GeoCoordinate (destLat, destLng, 0.0), image);
    map.addMapObject (customMarker);
}
catch (IOException e) {
    e.printStackTrace ();
}

Индикатор на тебе

    mapFragment.getPositionIndicator().setVisible(true);
    mapFragment.getPositionIndicator ().setMarker (image);

Чтобы изменить размер растрового изображения (изображение-маркер)

public static Bitmap scaleDown(Bitmap realImage, float maxImageSize, boolean filter) {
    float ratio = Math.min((float) maxImageSize / realImage.getWidth(),(float) maxImageSize / realImage.getHeight());
    int width = Math.round((float) ratio * realImage.getWidth());
    int height = Math.round((float) ratio * realImage.getHeight());
    Bitmap newBitmap = Bitmap.createScaledBitmap(realImage, width, height, filter);
    return newBitmap;
}

Вы должны создать объекты изображения

      Image img = new Image();
try {
   img.setImageResource(R.drawable.marker);
} catch (IOException e) {
   e.printStackTrace();
}

Затем вы должны убедиться, что вы добавили эти две строки:

      mapFragment.getPositionIndicator().setVisible(true);
mapFragment.getPositionIndicator ().setMarker (img);

У меня это сработало вот так.

Другие вопросы по тегам