2016-11-02 96 views
1

我正在嘗試將OverlappingMarkerSpiderfier集成到我的項目中,該項目正在使用小冊子。如果我看一下demo,我必須相信這是有效的,但是,我希望加載地圖的標記彼此接近,而不是點擊任何組。但是,從文檔看,我無法真正瞭解如何做到這一點,並且我也擔心縮放事件,因爲演示在任何縮放事件上摺疊了組。是否可以通過OverlappingMarkerSpiderfier爲傳單擴展標記?

因此,我的問題如下:我如何使用OverlappingMarkerSpiderfier傳單來擴展地圖加載的所有組並重新計算地圖縮放?

編輯:

這是我嘗試使用它:

var omsOptions = { 
    keepSpiderfied: true, 
    nearbyDistance: 300 
}; 
var oms = new OverlappingMarkerSpiderfier(map, omsOptions); 
for (var cachedMarkerIndex in cachedMarkers) { 
    oms.addMarker(cachedMarkers[cachedMarkerIndex]); 
} 

希望keepSpiderfied將讓他們spiderfied,但它不僅沒有在spiderfied方式初始化的標記,也如果我點擊地圖上的任意位置,它會摺疊標記。我真的不打算批評圖書館,因爲我相信它對作者來說是一個美妙的想法和讚美,但是,如果我所需要的功能不被支持,那麼我將不得不編寫自己的圖書館,而不是使用它。

+0

嗯爲什麼你想擴大mapstart上的所有組?如果沒有蜘蛛俠,這會讓人感到困惑。但我想你只想爲幾個團體做。我會看看 – Manuel

+0

@曼努埃爾,這在我的情況是可取的,因爲有很多標記,所有這些都必須顯示。如果用戶必須點擊每個組中的標記,那麼該頁面不便於用戶使用,因爲我正在顯示要完成的工作並且必須顯示所有標記。不得不在每個組中點擊至少一個標記會使其變得麻煩,並且如果標記可能在幾個組中,則在處理它們時存在冗餘的危險。如果在演示中顯示幸福感,那麼在該點擊展開方式下UX最好。但在我的情況下,這將打敗圖書館的好處。 –

回答

1

直接不..沒有類方法或選項離開標記spiderfied。關於第39行的plugins script,定義了一些map eventListeners:@map.addEventListener(e, => @['unspiderfy']()) for e in ['click', 'zoomend']。因此,在地圖的每次點擊或縮放事件中,標記都會被忽略。因此,您必須編寫自己的庫或通過添加附加選項來增強現有的庫。

EDIT(由約什阿帕德):

步驟:

  1. 我已經加入

    this.options = opt;

_Classfunction,以確保該選項可以稍後再使用。

  • 我已經加入
  • if (this.options.DisableSpiderfy) { //Spiderfy is disabled return; }

    分配給p.spiderfyfunction

  • 我已經加入
  • if (this.options.DisableUnspiderfy) { //Unspiderfy was disabled return; }

    分配給p["unspiderfy"]function

    用例:

     `var omsOptions = { 
          keepSpiderfied: true, 
          nearbyDistance: 100, 
          DisableUnspiderfy: true 
         }; 
         var oms; 
         function drawSpiderMarkers(rows, options) { 
          drawMarkers(rows, options); //This function draws markers by marker options 
          if (!oms) { 
           setTimeout(function() { 
            oms = new OverlappingMarkerSpiderfier(map, omsOptions); 
            for (var cachedMarkerIndex in cachedMarkers) { 
             oms.addMarker(cachedMarkers[cachedMarkerIndex]); 
            } 
            for (var cachedMarkerIndex in cachedMarkers) { 
             oms.spiderListener(cachedMarkers[cachedMarkerIndex]); 
            } 
           }, 200); 
          } 
         }` 
    

    隨着這些變化我已經達到的地步,我可以開/關spiderfy/unspiderfy切換到我的喜好,讓我spiderfy從一開始所有的標記和不unspiderfy他們在任意點擊。不幸的是,這是一種黑客攻擊,並且與未來版本的庫不兼容,但現在它是一個很好的解決方案。

    +0

    Manuel,謝謝你的回答。有沒有一種方法可以將咖啡腳本轉換爲Javascript? –

    +0

    沒關係,找到了這個:https://mikethedj4.github.io/Coffee2JS/。我會嘗試你的想法,再次感謝... –

    +0

    曼努埃爾,在此期間,我能夠解決這個問題,但不能接受你的答案在目前的狀態。如果你允許我用丟失的東西編輯你的答案,我會接受它。 –