route guide example cluster javascript google-maps zoom google-maps-markers markerclusterer

javascript - guide - marker group leaflet



markerClusterer en click zoom (5)

Acabo de agregar un MarkerClusterer a mi mapa de Google. Funciona perfectamente bien.

Me pregunto si hay alguna forma de ajustar el comportamiento de acercamiento cuando se hace clic en el clúster. Me gustaría cambiar el nivel de zoom si es posible.

¿Hay alguna manera de lograr esto?

Gracias


Modifiqué el evento clusterclick como se sugiere:

/** * Triggers the clusterclick event and zoom''s if the option is set. */ ClusterIcon.prototype.triggerClusterClick = function() { var markerClusterer = this.cluster_.getMarkerClusterer(); // Trigger the clusterclick event. google.maps.event.trigger(markerClusterer, ''clusterclick'', this.cluster_); if (markerClusterer.isZoomOnClick()) { // Zoom into the cluster. // this.map_.fitBounds(this.cluster_.getBounds()); // modified zoom in function this.map_.setZoom(markerClusterer.getMaxZoom()+1); } };

Funciona muy bien Muchas gracias


Parece que la API solo te permitirá alternar la funcionalidad de zoom

http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/docs/reference.html

Así que tendrá que editar la fuente, parece estar en la línea 1055

/** * Triggers the clusterclick event and zoom''s if the option is set. */ ClusterIcon.prototype.triggerClusterClick = function() { var markerClusterer = this.cluster_.getMarkerClusterer(); // Trigger the clusterclick event. google.maps.event.trigger(markerClusterer, ''clusterclick'', this.cluster_); if (markerClusterer.isZoomOnClick()) { // Zoom into the cluster. this.map_.fitBounds(this.cluster_.getBounds()); } };


Puede hacer esto sin modificar el código fuente usando un detector en el evento clusterclick markerClusterer:

var mcOptions = {gridSize: 40, maxZoom: 16, zoomOnClick: false, minimumClusterSize: 2}; markerClusterer = new MarkerClusterer(map, markers, mcOptions); google.maps.event.addListener(markerClusterer, ''clusterclick'', function(cluster){ map.setCenter(cluster.getCenter()); map.setZoom(map.getZoom()+1); });

es decir. Configuré zoomOnClick = false para tener un control más preciso del comportamiento del zoom del mapa para controlar la cantidad de zoom y la ubicación del zoom con cada clic.


Se ha actualizado el código fuente de MarkerClusterer, que permite un acceso mucho más fácil al evento de clic:

google.maps.event.addListener(markerCluster, ''clusterclick'', function(cluster) { // your code here });

donde ''markerCluster'' es el objeto MarkerCluster. Dentro de la función también puede acceder

cluster.getCenter(); cluster.getMarkers(); cluster.getSize();

Lo uso para cambiar a un tipo de mapa diferente, ya que uso un conjunto de mosaicos personalizados para una descripción más sencilla de los niveles de zoom más bajos:

map.setCenter(cluster.getCenter()); // zoom to the cluster center map.setMapTypeId(google.maps.MapTypeId.ROADMAP); // switch map type map.setOptions(myMapOptions); // apply some other map options (optional)

Saludos Jack


Si alguien necesita escribir esta función en coffeescript, fusioné la respuesta principal y la respuesta marcada en un fragmento de código.

mcOptions = maxZoom: 16 markerCluster = new MarkerClusterer map, markers, mcOptions # listener if a cluster is clicked google.maps.event.addListener markerCluster, "clusterclick", (cluster) -> if markerCluster.isZoomOnClick() # default is true #get bounds of cluster map.fitBounds cluster.getBounds() #zoom in to max zoom plus one. map.setZoom markerCluster.getMaxZoom() + 1

Este código de verificación es zoom al hacer clic se establece. Si es acercar el zoom al zoom máximo más uno, y centrarlo en el grupo. Código muy simple.