Различные маркеры на Google Android Map

Я хочу добавить много разных маркеров на карту 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 Webapp (маркер с именем «A», следующий «B» и т. Д.). Как я могу это достичь? Должен ли я добавить дополнительный файл маркера png в мое приложение? (Marker_a.png, marker_b.png, …) или есть более простой способ достичь этого? Также может быть, что будет более 26 результатов, чтобы мне, возможно, понадобились разные цвета маркеров.

Solutions Collecting From Web of "Различные маркеры на Google Android Map"

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

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

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

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

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

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

Да, вам нужен еще один 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); 

Я тоже застрял в той же ситуации, и я хотел, чтобы цифры были прикреплены к A, B, C ..

Хорошей новостью является то, что я нашел решение. Я только создал TextView с фоном Pin и вставил число в него динамически и преобразовал его в Drawable.

Вы можете создать другой TextView с фоном цвета колонок, который вы хотите.

Вот ссылка на мой вопрос, на который я ответил. 🙂

Я использовал этот код:

  OverlayItem crtItem = new OverlayItem( getPoint( Double.parseDouble(latCoordRow),Double.parseDouble(longCoordRow) ), nameRow , addressRow ); Drawable crtMarker = markerIconsArray.get(categoryRow); //my current drawable (from a HashMap) crtItem.setMarker(crtMarker); // set new marker crtMarker.setBounds(0, 0, crtMarker.getIntrinsicWidth(),crtMarker.getIntrinsicHeight()); //setBounds boundCenterBottom(crtMarker); //correct shadow problem 

Если вы не укажете, то ваш drawable не будет показан.