2014-01-08 137 views
4

展望utlize喬治MacKerron開發了spiderfy開放。不過,我還有一個要求是默認情況下加載所有標記爲「spiderd」的地圖。我可以通過使用javascript來點擊標記來模仿這一點,但通過使用spiderfy代碼必須有另一種方式。有沒有人完成這個?谷歌地圖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/

回答

1

the documentation:

keepSpiderfied(默認:false)

默認,OverlappingMarkerSpiderfier就像谷歌地球,因爲當你點擊>一個棘手的標記,三月在任何其他行動發生之前,肯定不會出現。

因爲這可以使棘手的用戶通過一個通過一組標誌一個工作,你>可以通過設置keepSpiderfied選項設置爲true覆蓋此行爲。

+0

是的,我已經試過了。但是這個構造函數似乎不起作用。 – user3032973

+1

你有示例代碼或jsfiddle來演示問題嗎? – geocodezip

+0

出於某種原因,我建立了永不作品的jsfiddle ... http://jsfiddle.net/vFAy6/5/ – user3032973

3

我想出了爲我工作的解決方案。添加所有標記之後,我設置一個超時來調用一個函數來打開每個羣集並在OMS js中。

  1. keepSpiderfied保持所有spideried標記打開。它不適合我,所以我改變了OMS js。如果它適合你,你不需要改變它。

找到該:

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

與此替換:

(!e||!this.keepSpiderfied); 
  • 函數調用以打開每個羣集組:

    function openAllClusters() { 
        var markers = oms.markersNearAnyOtherMarker(); 
    
        $.each(markers, function (i, marker) { 
         google.maps.event.trigger(markers[i], 'click'); 
        }); 
    } 
    
  • 我設定了一個時間出來後,我將我的最後一個標記(因爲它沒有工作後,立即只是調用函數):

    setTimeout(openAllClusters, 2000);

  • +0

    你好謝立,你會碰巧有這樣的一個工作的例子嗎?我試圖讓它與以下工作:http://paste.debian.net/170473/但標記不會在頁面加載時擴展。我替換(!e ||!this.keepSpiderfied)&& this.unspiderfy(); (!e ||!this.keepSpiderfied);在OMS js中,然後將第2步中的函數添加到我的html頁面。setTimeout被放置在我的腳本的末尾。 – lacrosse1991

    +0

    **注意**這可能會觸發infoWindow彈出窗口(因爲點擊標記) –

    +0

    嗨,這是否應該保持標記spiderfied,即使地圖被點擊?如果不是,你知道我該怎麼做? – huahax