Настройте значок текущего местоположения с помощью карт ЗДЕСЬ
Существуют ли 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);
У меня это сработало вот так.