studio - Clúster de Android y clics de marcador
polyutil android (2)
Puede crear un nuevo MarkerManager
que pase al constructor ClusterManager
. A continuación, MarkerManager#newCollection
una nueva colección Marker utilizando MarkerManager#newCollection
y agregue sus marcadores normales al mapa utilizando el método MarkerManager.Collection#addMarker
.
Luego, en lugar de llamar a mMap.setOnMarkerClickListener(mClusterManager)
, llame a mMap.setOnMarkerClickListener(mMarkerManager)
y gestionará el reenvío de sus eventos de Marker
Click a los oyentes adecuados. También necesitará configurar su oyente onMarkerClick para los marcadores normales con la función MarkerManager.Collection#setOnMarkerClickListener(GoogleMap.OnMarkerClickListener markerClickListener)
.
Recomiendo consultar el origen de las clases MarkerManager y ClusterManager para tener una mejor idea de cómo interactúan las clases.
Estoy usando la utilidad de clúster de Android en un mapa y he implementado con éxito un oyente onclick con mClusterManager.setOnClusterItemClickListener () para todos los marcadores gestionados por la biblioteca de clústeres.
Como también quiero que algunos marcadores estén siempre agrupados, también agrego algunos marcadores sin usar mClusterManager, pero usando directamente el mapa de mMap.addMarker (), de esta manera estoy seguro de que nunca se agrupan en el mapa.
Mi problema es que no puedo interceptar los clics en esos marcadores (los que siempre están no agrupados) porque ya usé mMap.setOnMarkerClickListener (mClusterManager) para manejar los marcadores de los clústeres cliqueados.
¿Hay alguna manera de escuchar los marcadores en clúster cliqueados Y los marcadores cliqueados que no maneja la biblioteca de clústeres?
¿O hay alguna manera de especificar que el administrador del clúster nunca agrupe algunos marcadores? En este caso, no tendré que manejar esos diferentes detectores de clics, ya que todos los marcadores se mostrarán con la utilidad de clúster.
Gracias
Una forma más de recibir el evento click para Marker
es usar la interfaz OnClusterItemClickListener
.
Llame a mClusterManager.setOnClusterItemClickListener(this);
y hacer que su clase implemente OnClusterItemClickListener
Luego, dentro del método onClusterItemClick
, obtendrás el ClusterItem, que es el marcador en el que se hizo clic,
@Override
public boolean onClusterItemClick(ClusterItem clusterItem) {
Toast.makeText(getActivity(), "Latitude " + clusterItem.getPosition().latitude, Toast.LENGTH_LONG).show();
return true;
}