Я использую Leaflet и Leaflet PM и их инструмент ломаной линии для создания ломаной линии. Все отлично работает при нажатии и добавлении новых точек на карту. Эти данные я затем использую, чтобы хранить где-то еще и делать с ними другие вещи. Дело в том.
У меня будет функция, позволяющая нажимать клавиши 'e' и 'd', чтобы добавлять точки на карту с помощью DOM Eventlisteners. Это потому, что мне нужно изменить высоту пола. И если я использую мышь для этого в том же месте, что и ранее добавленная точка, она закрывает полилинию. Также там это прекрасно работает. Я использую указатель мыши на карте, сохраняю длину лата, а затем при нажатии клавиши использую свой рабочий слой для добавления лата (latlng). Сохраняет широты и долготы, проводит черту. Но вершины не добавляются, как при нажатии. И мне нужна вершинно-добавленная функция, чтобы иметь возможность добавлять к ней другие мои метаданные. Я также собираюсь использовать эти вершины для настройки позже.
Я потратил на это целый день, и мне сейчас действительно нужна помощь, ничего не могу найти по этому поводу.
Я также попытался добавить маркер непосредственно к слою, но это не сработало.
В целом. Все отлично работает, когда я нажимаю, чтобы сделать ломаную линию. Но когда программно вызывается layer.addLatLng (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.
})
})
Изображение 1: Как это выглядит, когда я нажимаю (Все отлично работает, вершины добавляются).
Изображение 2: Как это выглядит, когда я добавляю точку, нажимая клавишу. Вершины не добавляются, поэтому pm: vertexadded никогда не вызывается.