2017-09-07 15 views
0

마커 클러스터 & 마커 클러스터 레이어 지원 플러그 인으로 전단을 사용하여지도를 만듭니다.기능 위도/경도가 동일한 여러 마커가있는 클러스터를 닫습니다.

여러 오버레이가있는 레이어 컨트롤이 있으므로 그 중 일부는 다른 latt/lng에서 다른 데이터로 체크 표시됩니다.

이 포인트는 적절하게 클러스터링되지만 동일한 lat/lng 지점의 클러스터를 클릭하면 클러스터가 중앙에 위치하지 않을 수 있으므로 문제가 발생합니다. 수동으로 클릭하고 드래그하여 센터링하지 않는 한 볼 수 있습니다.

다른 위도/경도의 점이있는 클러스터를 클릭하면 확대되고 그 영역의 중심에 위치합니다. 이 문제를 해결하기 위해이 두 가지 기능을 추가했습니다. 하나는 마커에 개별적으로 적용 되었기 때문에 클릭 할 때 클릭하면지도가 가운데로 밀려나는 클릭이 발생하여지도가 클러스터의 경계까지 확대됩니다.

클러스터를 클릭하면 동일한 지점에서 확장되어 표시 되겠지만 &은 클러스터를 중심으로 확대/축소하므로 클러스터를 다시 클릭해야합니다. 마커를 드러내십시오. 나는 이것을 원하지 않는다.

아마도 panTo를 사용하는 함수가 클러스터 클릭으로 더 잘 작동한다고 생각합니까? 이 방법을 구현하는 방법을 모르겠습니다. 감사! 이러한 기능은 다음과 같습니다 spiderfy 할 필요가 없습니다 클러스터에 또한 화재

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".

또한, 사용자가 알아 낸대로 줌을 수행하자 마자 해당 조작이 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

당신을 감사합니다! 이 일했다! "pan to"운동을보다 부드럽게 만들 수있는 방법이 있습니까? 지금 나는 그것을 클릭하고 클러스터의 중심을 잡아 당기다. 죄송합니다. 이것이 새로운 질문으로 간주 될지 확실하지 않습니다. – Ailis