Различные именованные Маркеры на Карте Google Android

я хочу добавить много различных маркеров на карте андроида. Мои работы кода, хорошие до сих пор с тем же наложением много раз:

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 результатов так, чтобы мне возможно были нужны различные цвета маркеров.

9
задан David 15 April 2010 в 19:45
поделиться

3 ответа

Да, вам нужен другой 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);
1
ответ дан 4 December 2019 в 07:47
поделиться

Вот пример проекта , показывающий несколько разных PNG на одном ItemizedOverlay . Вам просто нужно переопределить некоторые методы рисования для обработки различных PNG.

4
ответ дан 4 December 2019 в 07:47
поделиться

Один из ответов предоставляет решение с различными ItemizedOverlay для каждой группы маркеров.Вы можете достичь того же с помощью одного ItemizedOverlay, вызвав overlayItem.setMarker(drawable)

Если вы собираетесь загрузить маркеры из ресурсов, не забудьте позвонить:

drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());

перед вызовом setMarker. В противном случае маркеры отображаться не будут.

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

22
ответ дан 4 December 2019 в 07:47
поделиться
Другие вопросы по тегам:

Похожие вопросы: