Leaflet markercluster - при нажатии на кнопку увеличить, затем spiderfy
Я кластеризован на маркерах только в одном месте (то есть maxClusterRadius = 0). При нажатии на кластер я хотел бы, чтобы он центрировался и увеличивался с определенным уровнем увеличения (не с максимальным увеличением), а затем сразу паукообразным. Используя следующий код, spiderfy не происходит после увеличения, но будет, если уже на желаемом уровне масштабирования. Я подозреваю, что это потому, что кластер считается другим после увеличения. Как я могу ссылаться на новый кластер (например, на основе широты / долготы)?
cluster.on('clusterclick', function (a) {
if (map.getZoom() < 19) {
map.once('zoomend', function() { a.layer.spiderfy(); });
map.flyTo(a.layer.getLatLng(), 19);
}
else
a.layer.spiderfy();
});
0 ответов
Та же проблема. У меня есть обходной путь:
var mymap = L.map('mapid_<?= $this->id?>',{
maxZoom:13,
scrollWheelZoom:false,
}).setView([43.38388,-1.3049538], 7);
L.tileLayer('https://{s}.tile.openstreetmap.org/{z}/{x}/{y}.png?{foo}', {foo: 'bar', attribution: 'Map data © <a href="https://www.openstreetmap.org/">OpenStreetMap</a> contributors, <a href="https://creativecommons.org/licenses/by-sa/2.0/">CC-BY-SA</a>'}).addTo(mymap);
var markers = L.markerClusterGroup({
disableClusteringAtZoom: 14,
spiderfyOnMaxZoom: false,
zoomToBoundsOnClick:false,
animate:false
});
clickedMarker="";
mymap.on('zoomend', function() {
if (clickedMarker!=="" && mymap.getZoom()>=mymap.options.maxZoom) {
clickedMarker.__parent.spiderfy();
clickedMarker="";
}
});
markers.on('clusterclick', function (a) {
if (a.layer._childCount>0) {
clusterMarkers = a.layer.getAllChildMarkers();
clickedMarker=clusterMarkers[0];
}
if (mymap.getZoom()>=mymap.options.maxZoom) {
a.layer.spiderfy();
} else {
a.layer.zoomToBounds({padding: [20, 20]});
}
});
Странно, но spiderfy не работает, если для параметра анимации установлено значение true…