Добавить вершину к полилинии Leaflet программно - PullRequest
0 голосов
/ 24 апреля 2018

Я использую 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 никогда не вызывается.

How it looks when I'm clicking(Everything works fine, vertexes are added)

How it looks when I'm adding a point pressing the key. No vertextes are added, Therefore pm:vertexadded is never called.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...