Leaflet.js - установить маркер на клик, обновить позицию при перетаскивании

для небольшого проекта, над которым я работаю, мне нужно уметь размещать маркер на карте изображения с листом. js и обновлять позицию этого маркера, если он перетаскивается. Для этого я использую следующий код, но он терпит неудачу. Я получаю ошибку "маркер не определен". Я не знаю, почему это не работает - может быть, вы, ребята, могли мне помочь?;)

function onMapClick(e) {
    gib_uni();
    marker = new L.marker(e.latlng, {id:uni, icon:redIcon, draggable:'true'};
    map.addLayer(marker);
};

marker.on('dragend', function(event){
    var marker = event.target;
    var position = marker.getLatLng();
    alert(position);
    marker.setLatLng([position],{id:uni,draggable:'true'}).bindPopup(position).update();
});

Ответ 1

В приведенном выше фрагменте кода маркер не определяется в момент добавления обработчика события. Попробуйте следующее, когда слушатель переадресации добавляется сразу же после создания маркера:

function onMapClick(e) {
    gib_uni();
    marker = new L.marker(e.latlng, {id:uni, icon:redIcon, draggable:'true'});
    marker.on('dragend', function(event){
            var marker = event.target;
            var position = marker.getLatLng();
            console.log(position);
            marker.setLatLng(position,{id:uni,draggable:'true'}).bindPopup(position).update();
    });
    map.addLayer(marker);
};

Вам также не хватало скобки в конце вашей новой линии L.Marker().

Вы также помещаете position в массив в вызове setLatLng, но он уже является объектом LatLng.