Получить местоположение маркера группы с плагином Leafletjs + markercluster
Я использую LeafletJS для рисования арендованных домов на карте (также используя openstreetmap) и использую Leaflet.markercluster для группировки этих маркеров на кластере маркеров, пока пользователь не увеличит масштаб карты.
На сгруппированных значках я показываю количество арендуемых домов, сгруппированных в этом кластере, и я хочу нарисовать круг, когда вы наведите указатель мыши на этот сгруппированный значок. Размер круга зависит от количества сгруппированных маркеров, и мне нужен центр этого круга в том же месте моего кластера маркеров.
Моя проблема в том, что я не могу получить местоположение маркера кластера, я попытался поймать событие onMouseOver и местоположение, которое я получаю, это местоположение первого маркера группы.
В моем идеальном случае мне нужен значок маркера кластера в середине всех сгруппированных маркеров, а радиус этого круга будет охватывать все позиции сгруппированных маркеров, но теперь моя проблема заключается в том, как получить положение сгруппированных маркеров.
Это мой код markercluster.
var markers = new L.MarkerClusterGroup();
for (var i = 0; i < addressPoints.length; i++) {
var a = addressPoints[i];
var title = a[2];
var marker = L.marker(new L.LatLng(a[0], a[1]), {
title: title
});
var htmlPopUp = '<div><span class="marker-count">'+title+'</span></div>';
marker.bindPopup(htmlPopUp);
markers.addLayer(marker);
}
map.addLayer(markers);
//Create circleMarker for on Hover
var circleMarker = L.circle([-9999,-9999], "-1").addTo(map);
markers.on('clustermouseover', function (a) {
var circleRadius = a.layer.getAllChildMarkers().length *10000 / Math.pow(map.getZoom(), 3);
circleMarker.setLatLng([a.layer._cLatLng.lat,a.layer._cLatLng.lng]);
circleMarker.setRadius(circleRadius);
});
addressPoints содержит точки широты и долготы для маркеров
1 ответ
Это должно быть просто, попробуйте:
markers.on('clustermouseover', function (e) {
console.log(e.latlng);
}