2010-04-15 16 views
9

Quiero agregar muchos marcadores diferentes en un mapa de Android. Mi código funciona bien hasta ahora con la misma superposición de una y otra vez:Diferentes marcadores con nombre en Google Android Map

mapOverlays = mapView.getOverlays(); 
drawable = this.getResources().getDrawable(R.drawable.marker); 
itemizedOverlay = new MyItemizedOverlay(drawable); 
OverlayItem overlayItem = new OverlayItem(geoPoint, "foo", "bar"); 
mapOverlays.add(itemizedOverlay); 

Esto funciona bien hasta ahora. Pero cada marcador es igual. Lo que quiero hacer ahora es tener diferentes marcadores en el mapa como los que ves en Google Maps Webapp (un marcador llamado "A", el siguiente "B", y así sucesivamente). ¿Cómo puedo lograr esto? ¿Tengo que agregar un archivo marcador png extra a mi aplicación? (marker_a.png, marker_b.png, ...) o hay una manera más simple de lograr esto? También podría ser que haya más de 26 resultados, así que posiblemente necesite diferentes colores de los marcadores.

Respuesta

1

Sí, se necesita otro png, por lo que se vería así:

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); 
4

Here is a sample project mostrando varios archivos PNG diferentes en una sola ItemizedOverlay. Solo tiene que anular algunos de los métodos de dibujo para manejar los PNG diferentes.

22

Una de las respuestas proporciona la solución con ItemizedOverlay diferente para cada grupo de marcadores. Usted puede lograr lo mismo con solo llamando ItemizedOverlayoverlayItem.setMarker(drawable)

Si va a cargar sus marcadores de recursos, no se olvide de llamar:

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

antes de llamar setMarker. De lo contrario, los marcadores no se mostrarán.

ya que los marcadores son de tipo Drawable puede obtenerlos como cualquier otro Drawable, incluyendo la creación de ellos en tiempo de ejecución.

+1

Gracias por la punta, funciona muy bien. También puedes ver si su http://stackoverflow.com/questions/3515638/mapview-marker-shadow marcador no se muestra correctamente en relación con su sombra. – Dr1Ku

1

también me he quedado atrapado en la misma situación y que quería contar los pasadores insted de A, B, C ..

La buena noticia es que he encontrado la solución. Solo creé un TextView con un fondo Pin e inserté un número en él dinámicamente y lo convertí en Drawable.

Se pueden crear diferentes TextView con fondo de color pin que desea.

Aquí es el link a mi pregunta que he contestado. :)

0

que utiliza este código:

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 

Si usted no setBounds su dibujable no se mostrará.

Cuestiones relacionadas