2010-05-21 5 views
1

J'ai besoin de infoWindow pour être ouvert au lieu de zoomer sur la carte, en cliquant sur le ClusterMarker. J'utilise la bibliothèque Gmaps util MarkerClusterer pour créer un cluster de marqueurs. J'ai essayé de changer la ligne suivante dans markerclusterer.jsinfoWindow sur MarkerClusterer dans google maps

ClusterMarker_.prototype = new GOverlay(); 

avec

ClusterMarker_.prototype = new GMarker(); 

pour que je puisse obtenir la fonction openInfoWindow() dans le clustermarker, mais cela n'a pas fonctionné. J'ai une erreur. Si possible, veuillez suggérer une solution pour que cela puisse être fait avec MarkerClusterer. Ou bien n'importe quelle autre bibliothèque qui sera capable de faire ceci. Toute aide sera appréciée.

Répondre

1

Vous êtes probablement mieux modifier l'événement click pour le marqueur en markerclusterer.js à partir de la ligne 672.

Actuellement:

GEvent.addDomListener(div, "click", function() { 
    var pos = map.fromLatLngToDivPixel(latlng); 
    var sw = new GPoint(pos.x - padding, pos.y + padding); 
    sw = map.fromDivPixelToLatLng(sw); 
    var ne = new GPoint(pos.x + padding, pos.y - padding); 
    ne = map.fromDivPixelToLatLng(ne); 
    var zoom = map.getBoundsZoomLevel(new GLatLngBounds(sw, ne), map.getSize()); 
    map.setCenter(latlng, zoom); 
    }); 

changement à quelque chose comme:

GEvent.addDomListener(div, "click", function() { 
    map.openInfoWindowHtml(latlng, "Put your infowindow content here"); 
    }); 

De toute évidence, en fonction de combien vous voulez faire abstraction des choses, vous pouvez faire quelques choses:

  • Ajouter des options de configuration à MarkerClusterer pour indiquer si vous souhaitez faire un zoom dans la fonctionnalité ou la fonctionnalité infowindow
  • définir une configuration de fonction de rappel vous permet de spécifier quelle fonction MarkerClusterer appellera lorsqu'un cluster est cliqué.
+0

Parce que je na pas déterré correctement dans l'API, je ne savais pas que je peux ouvrir InfoWindow en utilisant l'objet carte, pensée seulement GMarker c un faire ça. Et essayait de faire de mon ClusterNarker_ un GMarker. Mais cela n'a pas fonctionné. Merci pour la redirection. Peut-être que cela fonctionnera. Mais je dois attendre jusqu'à lundi pour vérifier si cela fonctionne. Merci encore – Vishwanath

+0

La dernière version de markerclusterer (MarkerClustererPlus) vous permet de remplacer facilement certains événements comme l'événement click. Ce que je veux faire est similaire à la question, mais je veux seulement ouvrir un infowindow avec une liste de données de chaque marqueur dans le cluster, SEULEMENT pour le dernier niveau de zoom. Celui qui est le plus proche de la terre (je pense que c'est 21). Des idées? – acrespo

6

Pour MarkerCluster v3 il y a un événement personnalisé nommé « clusterclick », qui renvoie l'objet markerCluster, alors vous pouvez obtenir son centre et l'affecter à un InfoWindow, quelque chose comme ceci:

google.maps.event.addListener(mc, 'clusterclick', function (mCluster) { 
    //infowindow must be declared before in your code 
    infowindow.setContent("your info"); 
    var myLatlng = new google.maps.LatLng(mCluster.getCenter().ya, mCluster.getCenter().za); 
    infowindow.setPosition(myLatlng); 
    infowindow.open(map); 
}); 

aussi, vous devez définir l'option sur zoomOnClick faux:

var mcoptions = { zoomOnClick: false, showText: true, averageCenter: true} 
var mc = new MarkerClusterer(map, markersArray, mcoptions); 
+0

il me tire toujours le zoom ....... – ricricucit

+0

vous devez également définir l'option zoomOnClick sur faux J'ai mis à jour ma réponse –

+0

il semble y avoir quelques définitions de variable manquant. J'apprécie la réponse, mais une solution plus pratique serait géniale. –

Questions connexes