1

这是我重新提出的问题。

我正在整理一个随机的点数组,以通过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 进行缩放,而不是单击一次,因为我希望单击事件通过简单列表中的集群标记触发我的信息窗口。(如果我可以触发信息窗口并收集集群标记信息,我可以设法显示一个列表。)

我在 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 个管理到该新集群中。

更新:我现在可以打开信息窗口。它不是在好地方,但我可以打开它。

更新(晚上 7:00):我的信息窗口正在工作,但我可以无限打开它。

这是代码

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();
      }
  }

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

4

0 回答 0