2016-07-27 36 views
0

我有一個地圖,它有基於我的數據庫中的值編程放置在它上面的標記。當你點擊一個標記時,它將轉到該位置的詳細頁面。Google Maps API:如何判斷某個標記是否被另一個標記隱藏?

我的問題是,當地圖充分縮小時,彼此足夠接近的標記顯示爲單個標記,實際上隱藏了一些標記。 有沒有辦法通過編程來判斷一個標記是否是一組標記的一部分,或者被其他標記隱藏/遮蓋?

我的目的是爲每個動態生成的標記做這樣的事情:

marker.addListener('click', function() { 
    // if marker is not hiding any other markers 
    window.location.href = markerURL; 
    // else if it is hiding markers/is part of a group of markers 
    map.setZoom(15); 
    map.setCenter(marker.getPosition()); 
}); 

我已經檢查了Marker API documentation,但似乎無法找到任何有用的方法。 getClickablegetVisible在我的情況下總是返回true,無論標記是否被另一個標記覆蓋。有什麼建議麼?謝謝!

+0

您可能需要使用[MarkerClusterer](https://github.com/googlemaps/js-marker-clusterer),以便在多個標記羣集時顯而易見。 – geocodezip

+0

@geocodezip感謝您的建議。我考慮過這個,但希望有一個更簡單的方法。我不需要對聚類有任何控制,我只想知道它是否發生了。如果我找不到更好的解決方案,我可能會最終使用該庫。 – elethan

+0

沒有什麼內置API來做這樣的事情,我懷疑你提出的任何算法都不會像標記羣集器 – geocodezip

回答

1

我最終以MarkerClusterer去解決我的問題。我希望有一個更簡單的解決方案,但事實證明,這畢竟是相當簡單的。

我需要添加到現有標記生成代碼中的唯一東西是列表:var markers = [];,然後我在所有標記上調用了markers.push(marker);。最後一步是創建一個新的MarkerClusterer對象:

var markerCluster = new MarkerClusterer(map, markers, options); 

而且MarkerClusterer處理剩下的更多或更少(在options參數是可選的,但我用它的路徑設置爲我的圖片和設置的最大縮放級別)。現在,在以前我的標記堆疊在一起的情況下,無法在某些縮放級別查看或點擊某些標記,而是會看到一個數字指示該羣集中標記數量的羣集。點擊集羣圖標將進一步放大,顯示我的標記。

所有這些都是在他們的github頁面上的simple usage example之後完成的,但他們也有pretty good documentation。我的大部分時間得到這個工作的權利,實際上花的造型集羣圖標,以配合我的網站的配色方案...

enter image description here