2016-06-21 69 views
0

我有一個很小的縮放地圖,因此地球的多個部分會出現多次。如果添加一個普通的標記,它乘上如此,在視口中的每一個地方上有相同的標記:谷歌地圖:在寬闊的地圖上多次顯示自定義標記

var marker = new google.maps.Marker({ 
    position: myLatlng, 
    map: map, 
    title: 'Hello World!' 
}); 

https://jsfiddle.net/L50thpqr/

然而,當我使用自定義標記與路徑,它只中間一度顯示出來:

var marker = new google.maps.Marker({ 
    position: myLatlng, 
    map: map, 
    title: 'Hello World!', 
    icon: { 
     fillOpacity: .75, 
     scale: 1, 
     strokeColor: 'black', 
     strokeWeight: 1, 
     scale: .8, 
     fillColor: "#fffb70", 
     path: "M 0,-8.55 -8.55,8.55 8.55,8.55 Z" 
    } 
}); 

https://jsfiddle.net/q14s2rLk/

我的問題是如何獲得自定義標記相同的行爲,因此它也出現多次。

回答

0

簡化的一種方法是在服務器上呈現標記。 Google提供了API中內置的兩項服務,可以輕鬆實現:FusionTablesLayerKmlLayer。根據預先渲染或即時渲染的圖像創建自定義疊加層。

另一個有用的優化技術涉及視口標記管理:將地圖上呈現的標記限制爲僅存在於可視區域內的標記。

如果您仍然希望在地圖上顯示多個標記,請考慮創建一個自定義覆蓋圖,以顯示具有最少功能的標記。與API提供的標準標記相比,這種方法可以提高性能。

集羣通過整合聚合形式的地圖上彼此相鄰的數據來簡化數據可視化。可以使用Grid-vased ClusteringDistance-based Clustering。基於網格的聚類通過將地圖劃分爲一定大小的正方形(每個縮放大小發生變化),然後將這些標記分組到每個網格正方形中來工作。基於距離的聚類與基於網格的聚類相似,除了不是創建固定方形邊界的聚類,而是基於標記與聚類質心之間的距離創建聚類。通常通過迭代現有的標記位置在算法上指定簇重心。

或者你也可以使用一個數組中添加自定義標記到谷歌地圖,看看這個:Adding multiple custom markers to a google map using an array

+0

我不認爲這解決了我的問題。我沒有試圖向地圖添加多個標記。我只想讓我的一個自定義標記表現得像默認標記。 – Sebastian