【发布时间】:2024-01-05 11:43:01
【问题描述】:
我正在尝试检查每个 geojson 功能是否是标记。如果是我想删除放置的图层,然后再次初始化绘图标记。
如果不是同一个位置,我就直接加到要素层了。
问题在于 eachLayer 它总是返回 true,因为它循环遍历所有层,并且总是返回 true,因为标记已添加到特征。所以它总是重复。
features.eachLayer(layer => {
if(layer.pm._shape === 'Marker') {
if(e.layer._latlng !== layer._latlng) { //This is never true, should be true if the placed marker is not placed over an existing features marker
features.addLayer(e.layer);
} else if(e.layer._latlng === layer._latlng) { //this elseif is always true for some reason and will loop
map.removeLayer(e.layer)
DrawUtil.addMarker(map, isSnapping); //Alias for pm.enableDraw.marker
features.addLayer(e.layer);
}
}
})
这是小提琴,我忘了添加重要代码。 https://jsfiddle.net/2ftmy0bu/2/
【问题讨论】:
-
我想你在
pm:create事件中调用了这个,请添加完整的代码。还要检查一个图层是否是带有layer instanceof L.Marker的标记,以及它是否与e.layer.getLatLng().equals(layer.getLatLng())相同。请创建一个jsfiddle,它更容易帮助 -
我的错。现在添加了 jsfiddle。是的,提供的代码是在 pm:create 中调用的
标签: leaflet react-leaflet leaflet-geoman leaflet.pm