я хочу добавить много различных маркеров на карте андроида. Мои работы кода, хорошие до сих пор с тем же наложением много раз:
mapOverlays = mapView.getOverlays();
drawable = this.getResources().getDrawable(R.drawable.marker);
itemizedOverlay = new MyItemizedOverlay(drawable);
OverlayItem overlayItem = new OverlayItem(geoPoint, "foo", "bar");
mapOverlays.add(itemizedOverlay);
Это хорошо работает до сих пор. Но каждым маркером является то же. Что я хочу сделать, теперь имеет различные маркеры на карте как те, Вы видите на Веб-приложении Google Maps (маркер под названием, следующий "B", и так далее). Как я могу достигнуть этого? Я должен добавить дополнительный png файл маркера к своему приложению? (marker_a.png, marker_b.png...), или там более простой способ достигнуть этого? Могло также случиться так, что будет больше чем 26 результатов так, чтобы мне возможно были нужны различные цвета маркеров.
Да, вам нужен другой png, он будет выглядеть так:
mapOverlays = mapView.getOverlays();
// All "A"s
drawable = this.getResources().getDrawable(R.drawable.marker_a);
itemizedOverlay = new MyItemizedOverlay(drawable);
OverlayItem overlayItem = new OverlayItem(geoPoint, "foo", "bar");
mapOverlays.add(itemizedOverlay);
// All "B"s
drawable = this.getResources().getDrawable(R.drawable.marker_b);
itemizedOverlay = new MyItemizedOverlay(drawable);
OverlayItem overlayItem = new OverlayItem(geoPoint, "foo", "bar");
mapOverlays.add(itemizedOverlay);
Вот пример проекта , показывающий несколько разных PNG на одном ItemizedOverlay
. Вам просто нужно переопределить некоторые методы рисования для обработки различных PNG.
Один из ответов предоставляет решение с различными ItemizedOverlay
для каждой группы маркеров.Вы можете достичь того же с помощью одного ItemizedOverlay
, вызвав overlayItem.setMarker(drawable)
Если вы собираетесь загрузить маркеры из ресурсов, не забудьте позвонить:
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
перед вызовом setMarker
. В противном случае маркеры отображаться не будут.
Поскольку маркеры имеют тип Drawable
, вы можете получить их, как и любой другой Drawable
, включая создание их во время выполнения.