我正在使用 Leaflet 和 Leaflet PM 及其折线工具来创建折线。单击并向地图添加新点时一切正常。然后我用这些数据存储在其他地方并用它做一些其他的事情。事情是。
我将拥有一个功能,能够按“e”键和“d”键使用 DOM 事件监听器向地图添加点。这是因为我需要更改楼层标高。如果我在与先前添加的点相同的位置上使用鼠标,它会关闭折线。那里也很好用。我在地图上使用鼠标悬停,存储 lat long,然后在 keydown 上我使用我的 workingLayer 添加LatLng(latlng)。它保存纬度和经度,它画线。但是当我单击时没有添加顶点。我需要 vertexadded 函数才能将我的其他元数据添加到它。稍后我还将使用这些顶点进行自定义。
我已经花了一整天的时间,现在我真的需要一些帮助,找不到任何关于它的信息。
我还尝试将标记直接添加到图层,但没有奏效。
总而言之。当我单击制作折线时,一切正常。但是当以编程方式调用 layer.addLatLng(latlng); 不会添加顶点。如图所示,只有 latlng 及其所在位置。因此 pm:vertexadded 永远不会被调用。
我错过了什么?
我的代码中的一个例子:
lmap.on('pm:drawstart', function(e){
//Layer is now the workingLayer
let layer = e.workingLayer;
//Will hold coordinates from map
let pointFromMouse;
lmap.addEventListener('mousemove', function(e){
//Assigning current position lat/long
pointFromMouse = e.latlng;
})
document.addEventListener('keydown', function(e){
if(e.keyCode == '69'){
//When pressing 'e', adds it to the polyline
layer.addLatLng(pointFromMouse);
//I also tried setLatLngs(); and redraw(); no sucess
}
})
layer.on('pm:vertexadded', function(e){
//Here I'm calling some other stuff. I stuff another array along
//with other meta-data, other than lat/long.
})
})
Image1:单击时的外观(一切正常,添加了顶点)。
Image2:当我添加一个按键时它的外观。没有添加顶点,因此永远不会调用 pm:vertexadded。