Я только начинаю узнавать о Leaflet.js для своего будущего проекта.
Что я пытаюсь выполнить: мне нужно составить список маркеров, которые отображаются на карте, и когда элемент списка наведен (или наведен указатель мыши), он будет отображаться где позиция на карте (для одиночного маркера он должен изменить свой цвет. Для кластерного маркера он должен отобразить линию покрытия, например, как она ведет себя при наведении на нее .. и, возможно, тоже изменит ее цвет, если возможно). Карта не должна меняться, как и уровень масштабирования, проще говоря, мне нужно выделить маркер / кластер на карте.
Что я сделал сейчас: я могу сделать это с помощью одиночного маркера.
что меня очень расстроило: мне не удалось найти способ сделать это с помощью кластерного маркера.
Я использую глобальный объект var для хранения любого созданного маркера.
function updateMapMarkerResult(data) {
markers.clearLayers();
for (var i = 0; i < data.length; i++) {
var a = data[i];
var myIcon = L.divIcon({
className: 'prop-div-icon',
html: a.Description
});
var marker = L.marker(new L.LatLng(a.Latitude, a.Longitude), {
icon: myIcon
}, {
title: a.Name
});
marker.bindPopup('<div><div class="row"><h5>Name : ' + a.Name + '</h5></div><div class="row">Lat : ' + a.Latitude + '</div><div class="row">Lng : ' + a.Longitude + '</div>' + '</div>');
marker.on('mouseover', function(e) {
if (this._icon != null) {
this._icon.classList.remove("prop-div-icon");
this._icon.classList.add("prop-div-icon-shadow");
}
});
marker.on('mouseout', function(e) {
if (this._icon != null) {
this._icon.classList.remove("prop-div-icon-shadow");
this._icon.classList.add("prop-div-icon");
}
});
markersRef[a.LocId] = marker; // <-- Store Reference
markers.addLayer(marker);
updateMapListResult(a, i + 1);
}
map.addLayer(markers);
}
Но я не знаю, какой объект или свойство получить ссылку на кластерный маркер. И я запускаю событие маркера своей глобальной переменной (которая работает только с одним маркером).
...
li.addEventListener("mouseover", function(e) {
jQuery(this).addClass("btn-info");
markersRef[this.getAttribute('marker')].fire('mouseover'); // --> Trigger Marker Event "mouseover"
// TODO : Trigger ClusteredMarker Event "mouseover"
});
...
Это мой текущий https://jsfiddle.net/oryza_anggara/2gze75L6/, любое зацепление может быть очень большая помощь. Спасибо.
Примечание: я знаком только с JQuery, у меня нет никаких знаний о других библиотеках, таких как Angular.js.