Google Maps Spiderfy默认打开

时间:2014-01-08 15:27:50

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

想要了解乔治麦克克隆开发的蜘蛛。但是我有另一个要求是用所有标记加载地图" spiderd"默认情况下输出。我可以通过使用javascript来点击标记来模仿这一点,但是使用spiderfy代码必须有另一种方法。有没有人完成这个?

https://github.com/jawj/OverlappingMarkerSpiderfier#overlapping-marker-spiderfier-for-google-maps-api-v3

var map = new google.maps.Map(document.getElementById("map-canvas"), options);
var iw = new google.maps.InfoWindow();
var oms = new OverlappingMarkerSpiderfier(map, {keepSpiderfied: true});

http://jsfiddle.net/vFAy6/5/

3 个答案:

答案 0 :(得分:4)

我想出了一个适合我的解决方案。在我添加了所有标记之后,我设置了一个超时来调用一个函数来打开每个集群和OMS js。

  1. keepSpiderfied保持所有蜘蛛标记打开。它不适合我,所以我改变了OMS js。如果它适合您,则无需更改此内容。
  2. 找到这个:

    (!e||!this.keepSpiderfied)&&this.unspiderfy();
    

    替换为:

    (!e||!this.keepSpiderfied);
    
    1. 调用打开每个群集组的功能:

      function openAllClusters() {
          var markers = oms.markersNearAnyOtherMarker();
      
          $.each(markers, function (i, marker) {
              google.maps.event.trigger(markers[i], 'click');
          });
      }
      
    2. 我添加了我的最后一个标记后设置了超时(因为它只是在之后立即调用该函数不起作用):

      setTimeout(openAllClusters, 2000);

答案 1 :(得分:1)

来自the documentation:

  

keepSpiderfied(默认值:false)

     

默认情况下,OverlappingMarkerSpiderfier的工作方式与Google Earth类似,当您点击>一个蜘蛛标记,在任何其他动作发生之前,标记都是非标记的。

     

因为这可能使用户逐个处理一组标记变得棘手,所以你>可以通过将keepSpiderfied选项设置为true来覆盖此行为。

答案 2 :(得分:0)

根据谷歌地图扩展的开发者,这将无法正常工作。

https://github.com/jawj/OverlappingMarkerSpiderfier/issues/2