2015-09-29 6 views
2

Я хотел бы разрешить пользователю изменять атрибуты свойств при нажатии на функцию. Я знаю, что API ArcGIS JS имеет для него очень приятную реализацию, но я не могу использовать ArcGIS JS, потому что мои функции создаются из geojson. На этом моменте единственное, что у меня есть, это окно bindPopup, которое я хотел бы расширить, чтобы пользователь мог фактически выбрать атрибут и отредактировать его.Редактирование атрибутов свойств в листовке

Я видел this пост, но понятия не имею, как применить его к моему делу. Гуглинг также не помог, к сожалению.

Вот мой сценарий с простым всплывающим окном. Любая помощь будет высоко оценена.

<script> 
    var map = L.map('map').setView([52.52,13.384], 13); 
    L.tileLayer('http://{s}.www.toolserver.org/tiles/bw-mapnik/{z}/{x}/{y}.png').addTo(map); 

    function onEachFeature(feature, layer) { 
    if (feature.properties) { 
     layer.bindPopup("<b>" + feature.properties.linkstr + "</b> has flow " + feature.properties.flow + "."); 
    } 
    } 

    var streets = new L.geoJson(arcs, { 
     onEachFeature: onEachFeature 
    }).addTo(map); 
</script> 

ответ

2

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

function onEachFeature (feature, layer) { 
    // Create an input 
    var input = L.DomUtil.create('input', 'my-input'); 
    // Set a feature property as value 
    input.value = feature.properties.name; 
    // Add a listener to watch for change on input 
    L.DomEvent.addListener(input, 'change', function() { 
     // Input changed, change property value 
     feature.properties.name = input.value; 
    }); 
    // Bind popup to layer with input 
    layer.bindPopup(input); 
} 

Вот пример на Plunker: http://plnkr.co/edit/VzUfSD?p=preview

+0

Спасибо! Кусок кода, который вы опубликовали, имеет смысл, но я уверен, что я столкнусь с некоторыми проблемами, пытающимися его реализовать. PS. Извините, мне потребовалось столько времени, чтобы ответить вам. Мне вдруг пришлось приступить к работе над другой, но я надеюсь, что смогу вернуться к этой проблеме редактирования в выходные дни. – ievgenii

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