如何将infowindow添加到群集标记

时间:2013-10-15 15:36:40

标签: javascript google-maps-api-3 infowindow

这是我重新提出的问题。

我正在穿着一系列随机点来通过markerclusterer.js聚集它们。

for (var i = 0; i < 10; i++) {
      Markers[i] = new google.maps.Marker({
        position: new google.maps.LatLng(45.5 + (Math.random()/200), -73.60 -(Math.random()/20)),
        map: map,
        title: i.toString()
      });

}
var mc = new MarkerClusterer(map,Markers,mcOptions);

这很好用,现在问题就出现了。

我想让那个群集给我一个信息窗口或任何其他更好的选择。 所以我将markerclusterer.js'click'事件中的dom监听器更改为'dblclick'事件。因此,我的群集将使用dblclick进行缩放而不是单击,因为我希望单击事件能够在简单列表中使用聚簇标记来分配我的信息窗口。 (如果我可以触发infowindow并收集聚集标记信息,我可以设法显示列表。)

我在markerclusterer.js中创建了一个新的dom监听器:

google.maps.event.addDomListener(this.div_, "click", function (e) {
    cMouseDownInCluster = false;
    if (!cDraggingMapByCluster) {
        var theBounds;
        var mz;
        var mc = cClusterIcon.cluster_.getMarkerClusterer();
        /**
         * This event is fired when a cluster marker is clicked.
         * @name MarkerClusterer#click
         * @param {Cluster} c The cluster that was clicked.
         * @event
         */
        google.maps.event.trigger(mc, "click", cClusterIcon.cluster_);
        google.maps.event.trigger(mc, "clusterclick", cClusterIcon.cluster_); // deprecated name


        // Prevent event propagation to the map:
        e.cancelBubble = true;
        if (e.stopPropagation) {
            e.stopPropagation();
        }
    }
});

这只是没有“缩放”行为的原件的副本。

编辑::测试

我已经使用console.log(mc.getMarkers())进行了测试;观察标记是否被鉴定并且它返回[Bi,Bi,Bi,Bi,Bi,Bi,Bi,Bi,Bi,Bi]。所以现在我遇到的问题是我不知道如何处理Bi的事情。

Bi是一个构造函数,包含我需要的所有信息。所以我可以用它做我想做的事。

现在我需要检查如何缩放到下一个群集并点击它...它再次给我10 Bi。我需要知道如何只获取管理到新集群中的X.

更新:我现在可以打开infowindow了。它不是在好地方,但我可以打开它。

更新(晚上7点):我的infowindow工作,但我可以打开无限量的。

这是代码

google.maps.event.addDomListener(this.div_, "click", function (e) {
  cMouseDownInCluster = false;
  if (!cDraggingMapByCluster) {
      var theBounds;
      var mz;
      var mc = cClusterIcon.cluster_.getMarkerClusterer();
      var Mrk_cluster = mc.getMarkers();


      /**
       * This event is fired when a cluster marker is clicked.
       * @name MarkerClusterer#click
       * @param {Cluster} c The cluster that was clicked.
       * @event
       */
      google.maps.event.trigger(mc, "click", cClusterIcon.cluster_);
      google.maps.event.trigger(mc, "clusterclick", cClusterIcon.cluster_); // deprecated name
      //test infowindow
        var contentString = '<div id="content">'+'<p>Test</p>' +'</div>';

        var infowindow = new google.maps.InfoWindow({
            content: contentString,
            position: new google.maps.LatLng(Mrk_cluster[0].position.lat(),Mrk_cluster[0].position.lng())
        });

          infowindow.open(map);



      console.log(mc.getMarkers());

      // Prevent event propagation to the map:
      e.cancelBubble = true;
      if (e.stopPropagation) {
          e.stopPropagation();
      }
  }

}); 所以我试图找到一个能够阻止这种行为的触发器。

0 个答案:

没有答案