2013-09-02 2 views
11

для небольшого проекта, над которым я работаю, мне нужно разместить маркер на карте изображений с лифтом.js и обновить положение этого маркера , если он перетаскивается. Для этого я использую следующий код, но он терпит неудачу. Я получаю маркер ошибки не определен. Я не знаю, почему он не работает - может быть, вы, ребята, могли мне помочь? ;)leaflet.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(); 
}); 

ответ

23

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

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.

+0

Сегодня вечером я придумал почти идентичное решение. :-) Спасибо! – kirijanker

+1

Dunno, в какой версии вы использовали парней, но это 'marker.setLatLng ([position.lat, position.lng], ...' вместо 'marker.setLatLng ([position], ...' now. – zatziky

+0

Я обновил ответ с правильным использованием. Автору не нужно было помещать 'position' в массив, потому что он уже был объектом« LatLng », который является результатом' getLatLng() 'и ввода в' setLatLng() 'для документов Leaflet : http://leafletjs.com/reference.html#marker – nothingisnecessary

Смежные вопросы