Je viens d'ajouter un MarkerClusterer à ma carte Google. Cela fonctionne parfaitement bien.
Je me demande simplement s'il existe un moyen d'ajuster le comportement de zoom avant lorsque le cluster est cliqué. J'aimerais changer le niveau de zoom si possible.
Y a-t-il un moyen d'y parvenir?
Merci
J'ai modifié l'événement clusterclick comme suggéré:
/**
* 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);
}
};
Ça marche super! Merci beaucoup
Il y a eu une mise à jour du code source de MarkerClusterer, permettant un accès beaucoup plus facile à l'événement click:
google.maps.event.addListener(markerCluster, 'clusterclick', function(cluster) {
// your code here
});
où 'markerCluster' est l'objet MarkerCluster. Dans la fonction, vous pouvez également accéder
cluster.getCenter();
cluster.getMarkers();
cluster.getSize();
J'utilise ceci pour passer à un autre type de carte, car j'utilise un ensemble de tuiles personnalisé pour une vue d'ensemble plus facile sur les niveaux de zoom inférieurs:
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)
Cordialement Jack
Vous pouvez le faire sans modifier le code source en utilisant un écouteur sur l'événement 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(markerClusterer.getCenter());
map.setZoom(map.getZoom()+1);
});
c'est à dire. J'ai défini zoomOnClick = false pour avoir un contrôle plus fin du comportement de zoom de la carte afin de contrôler la quantité de zoom et l'emplacement du zoom à chaque déclic.
Il semble que l'API vous permette uniquement d'activer la fonctionnalité de zoom
http://google-maps-utility-library-v3.googlecode.com/svn/trunk/markerclusterer/docs/reference.html
Vous devrez donc éditer la source, elle semble être sur la ligne 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());
}
};
Si quelqu'un a besoin d'écrire cette fonction en coffeescript, j'ai fusionné la première réponse et la réponse marquée en un seul extrait de code.
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
Cette vérification de code est un zoom sur le clic est défini. S'il s'agit d'un zoom avant pour un zoom maximum plus un, et centrez sur le cluster. Code très simple.