George MacKerron의 위대한 spiderfier 인 https://github.com/jawj/OverlappingMarkerSpiderfier-Leaflet 을 사용하면 문제가 있습니다.전단지 마커 click spiderfy
핀을 클릭하면 팝업이 표시됩니다. 그건 내가 멋지다 핀이 겹치지 않는 한 멋지다. spiderfied 핀의 문제는 spiderfied 세트의 다른 핀들과 겹치지 만 첫 번째 클릭시 열리는 팝업입니다.
따라서 spiderfying 직후에 팝업을 닫을 수있는 spiderfy-listener에 대한 클릭 콜백이 필요합니다. 또는 더 나은, 직접 spiderfying하기 전에.
질문은 : 어떻게하면 spiderfy-listener에서 콜백을 얻을 수 있습니까? 글쎄, 어쩌면 그 일을하는 것은 벙어리 일 수도 있습니다. 그 경우에는 무엇을해야할 지 말해주세요. 감사합니다 :)
괴팍스러운 20ms의 내가 유지하려는하지는 바닥에 해킹 사용내 코드 :
// Kartendarstellung mit Spiderfier
var map = L.map('basicMap').setView(new L.LatLng(position[0][0], position[0][1]), 13);
map.doubleClickZoom.disable();
var oms = new OverlappingMarkerSpiderfier(map, {
keepSpiderfied: true,
nearbyDistance: 25,
legWeight: 2
});
L.tileLayer('http://{s}.tile.cloudmade.com/BC9A493B41014CAABB98F0471D759707/997/256/{z}/{x}/{y}.png', {
maxZoom: 18,
attribution: 'Kartendaten © <a href="http://openstreetmap.org">OpenStreetMap</a> und Mitwirkende, Lizenz: <a href="http://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>, Bilddaten © <a href="http://cloudmade.com">CloudMade</a>'
}).addTo(map);
for (var i = 1; i < <?php echo count($pos);?>; i++){
switch(position[i][3]){
case "B":
marker = L.marker([position[i][0], position[i][1]],{icon: BIcon}).addTo(map);
break;
case "S":
marker = L.marker([position[i][0], position[i][1]],{icon: SIcon}).addTo(map);
break;
}
// Marker ungeöffnet auf Karte setzen
var popup = new L.popup();
var content = position[i][2];
// Marker-Inhalt zuweisen
marker.bindPopup(content);
// Spiderfier Marker setzen
oms.addMarker(marker);
}
oms.addListener('spiderfy', function() {
// Hack als Ersatz zu fehlendem Spiderfy-Marker-Click-Callback
setTimeout(function() {
map.closePopup();
}, 20);
});