2017-09-07 59 views
0

我正在創建一個帶有小冊子的地圖,標記集羣&標記集羣圖層支持插件。函數縮放到集羣關閉具有多個標記的集羣在相同的經度/ lng

我有一個圖層控件有多個疊加層,所以他們中的一些選中的標記會以不同的數據在相同的緯度/經度上彈出。

這些點是正確的聚類,但我遇到了一個問題,如果我點擊相同的經緯度/集羣點集羣不會居中,它往往會停留在一邊,很難除非您手動點擊並拖動以將其居中。

如果點擊不同緯度點的集羣,它會放大並居中該區域。爲了嘗試解決這個問題,我添加了這兩個函數,一個單獨應用於標記,以便當它們被點擊時它們位於地圖的中心,一個應用於被點擊的羣集,導致地圖縮放到羣集的邊界。

會發生什麼情況,您將單擊羣集,它會展開並在同一點顯示標記,但會縮小&居中並關閉羣集,因此您必須再次單擊它以揭示標記。我不希望發生這種情況。

我在想也許一個函數使用panTo會更好地與羣集點擊?但不知道如何實現這一點。謝謝! 這些功能:

markerClusters.on('clusterclick', function (a) { 
     a.layer.zoomToBounds(); 
    }); 


    map.on('popupopen', function(e) { 
var px = map.project(e.popup._latlng); // find the pixel location on the map where the popup anchor is 
px.y -= e.popup._container.clientHeight/2 // find the height of the popup container, divide by 2, subtract from the Y axis of marker location 
map.panTo(map.unproject(px),{animate: true}); // pan to new center 

    }); 

回答

0

你或許應該在你的markerClusters MCG使用"spiderfied"事件,而不是"clusterclick"這也激發對於不需要spiderfy集羣。

此外,正如你想象的那樣,只要你執行縮放操作,該操作就會關閉spiderfication。按照您猜測的方式使用panTo可避免縮放變化,因此不會關閉spiderfication。

markerClusters.on('spiderfied', function (event) { 
    var cluster = event.cluster; 

    // Center the map on the clicked cluster if it gets spiderfied. 
    map.panTo(cluster.getLatLng()); 
}); 

演示:https://jsfiddle.net/3v7hd2vx/397/

+0

謝謝!這工作!有沒有辦法讓「平移」運動更平滑?現在我點擊了,並且它有點混亂以集羣居中。抱歉,我不確定這是否會被視爲新問題。 – Ailis