我在 AngularJS 应用程序上使用 Leaflet 和 Marker Cluster 插件。
在地图的项目上选择时,我需要突出显示它。因为我使用的是 divIcons,所以我正在添加或删除类,如果项目不是标记,也会设置颜色。
为此,我将最后单击的项目保存在内存中,以便在选择下一个项目时,我可以取消突出显示前一个项目并突出显示当前项目。
// De-highlight previous item
if (lastClickedLayer) {
if (lastClickedLayer instanceof L.Marker) {
lastClickedLayer._icon.classList.remove('marker-highlighted');
}
else {
lastClickedLayer.setStyle({
color: (lastClickedLayer.feature.status === 'active') ? '#43A7E0' : '#EB7938'
});
}
}
// Highlight item on the map
lastClickedLayer = e.layer;
if (e.layer instanceof L.Marker) {
e.layer._icon.classList.add('marker-highlighted');
}
else {
e.layer.setStyle({
color: '#32C9AC'
});
}
如果不是标记聚类,一切都会好起来的!当我缩小并获得一组当前标记(假设我先选择一个标记)然后放大回该群集时,我选择的标记没有分配“标记突出显示”类。
另外,如果我处于缩放的末端,并且簇显示标记的蜘蛛网(或它们如何称呼),那么当关闭选择标记的群集时,我似乎无法解开类别的类别该层的-它只是未定义。
我怎么可能解决我的问题?
哦,我的地图项保存为新的 L.MarkerClusterGroup()。