¿Cómo saber qué marcador se ha hecho clic en Google Maps v2 para Android?

Estoy haciendo una aplicación con un Google Maps en él, para Android. Tengo un montón de marcadores en mi pantalla y estoy preparando globo personalizable para cada marcador cuando se hace clic. Esto significa que tengo información que es diferente según el marcador al que se hizo clic.

He configurado el contenido de la vista del marcador con setInfoWindowAdapter y luego anular el método getInfoContents.

El problema es: Este método es la implementación general del contenido de la ventana de información, pero cada marcador mostrará su propia información. Por lo tanto, por lo que entiendo, tengo que de alguna manera detectar en getInfoContents (Marcador marcador) que los marcadores se han hecho clic, con el fin de la carga de mis estructuras de datos la información necesaria para presentar en la ventana de información. La pregunta es: ¿Cómo puedo identificar qué entidad representa el marcador marcado? Quiero decir, tener sólo el marcador de objeto en getInfoContents que se activó para mostrar la ventana de información, ¿cómo puedo detectar cuál es la información adecuada para mostrar? I sobre la comparación del título de la cadena usando marker.getTitle (), pero esto me obliga a mostrar un título en la ventana de información, que no quiero. También hay un marker.getId (), pero este ID es generado por la API y no puedo controlarlo

¿Algunas ideas?

En respuesta a:

La pregunta es: ¿Cómo puedo identificar qué entidad representa el marcador marcado? […] También hay un marker.getId (), pero ese ID es generado por la API y no puedo controlarlo

Usted puede controlarlo. El marcador es devuelto por addMarker (), por lo que puede obtener su ID y almacenarlo. Aquí está el código:

Map <String, Integer> mMarkers = new HashMap<String, Integer>(); 

 MarkerOptions mo = new MarkerOptions() .icon(BitmapDescriptorFactory.fromResource(R.drawable.my_marker)) .position(new LatLng(mLat, mLon)) .flat(true) .snippet("Click here for details") .rotation(0) .title(title); 

Cuando agrega el marcador al mapa, guarde su ID en el contenedor

 Marker mkr = map.addMarker(mo); mMarkers.put(mkr.getId(), myObject.getId()); 

Entonces, cuando se hace clic en el marcador, puede recuperar el id de "myObject" como este

 map.setOnInfoWindowClickListener(new OnInfoWindowClickListener() { public void onInfoWindowClick(Marker marker) { int id = mMarkers.get(marker.getId()); // Do stuff with the id } }); 

No está obligado a mostrar el título cuando lo tiene establecido, por lo que puede utilizar eso y siempre y cuando devuelva una View de getInfoContents y no setText en cualquier subvista de que se devuelve View con el valor del título.

Dependiendo de cómo y si ya mantiene referencias a todos los marcadores, existen alternativas, por ejemplo, si usted tenía List<Marker> policeMarkers y List<Marker> badGuysMarkers puede usar un condicional if (policeMarkers.contains(marker)) { ... } else { ... } .

También puede mantener un Map<Marker, YourMarkerRelatedDataModel> allMarkers y hacer YourMarkerRelatedDataModel model = allMarkers.get(marker); Y utilizar ese valor para diferenciar.

Por último, puede utilizar Android Maps Extensions , que agrega funciones como Marker.setData(Object) y Object Marker.getData() para mantener su modelo cerca de sus marcadores y no crear cosas como Map<Marker, Model> .

Prueba este código:

 @Override public void onInfoWindowClick(final Marker marker) { // TODO Auto-generated method stub if (marker.getTitle().equalsIgnoreCase("Start")) { Toast.makeText(showMaps.this, "You have click on start -->", Toast.LENGTH_LONG).show(); Log.e("marker.getPosition()-->", "" + marker.getPosition()); } } 
  • ¿Qué archivos de java android no debo subir a mi servidor SVN?
  • Primavera RestTemplate HTTP Post con parámetros causa error 400 solicitud incorrecta
  • Cómo obtener cadena de JSONObject sin nombre específico
  • UDP Hole Punching no es posible con el proveedor móvil
  • Http get exception El host de destino no debe ser null en ICS
  • Hacer eclipse depurar mi androide PROYECTO
  • Guardando una imagen grande en PNG
  • Android WebView personalizado no logra encontrar funciones de javascript definidas en HTML cargado
  • ¿Crear una transición Fragment como la aplicación Contactos?
  • Protección contra el spam onclick ()
  • Android Volley Null Pointer Exception
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.