2016-11-03 3 views
0

Я добавлять слои к layergroup «drawnitems» с помощью листка draw libraryНайти листовку идентификатор последнего слоя, созданного в листовке

drawnItems.addLayer(L.polygon(polygon)); 

Мне нужно найти листовку ID слоя, созданного с использованием приведенного выше кода непосредственно на его создание. Это происходит в цикле. Я добавляю несколько слоев.

Моя цель - сохранить формы, отредактированные пользователем в БД. Эти формы предварительно создаются, а затем сохраняются в БД и затем отображаются на карте. Для этого я планирую использовать идентификатор лифлета, назначенный каждой форме, а затем найти соответствующую запись db, используя некоторую логику в событии «draw: edit».

+0

сработало? – Manuel

+0

Спасибо, что ответили. Я отправил свой ответ. – codejunkie

ответ

2

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

for(layer of polyLayers) { 

     drawnItems.addLayer(layer); 
     var leafletId = layer._leaflet_id 
    }; 

Но я думаю, что для подхода, который не был бы лучшим решением, потому что листовка ID не являются стабильными. Было бы лучше динамически создавать переменные слоя и назначать идентификатор из вашей базы данных, где хранятся слои. Затем вы можете получить каждый уровень по его идентификатору базы данных (например, myPolyLayers[idFromDataBase]). Просто выполните:

var myPolyLayers = {}; 

    for(layer of polyLayers) { 

     var id = Math.floor((Math.random() * 500) + 1); // The ID from the database 

     myPolyLayers[id] = layer 

     drawnItems.addLayer(layer); 
     //var leafletId = layer._leaflet_id 
    }; 

    console.log(myPolyLayers[id]) // Get the layer with the ID given before 

В этом фрагменте идентификатор, в котором я выбрал случайное число, должен быть идентификатором из базы данных.

+0

Что означает, что «идентификатор листка не стабилен»? Когда они меняются? – user2441511

+1

Я имею в виду, если дважды добавить один и тот же слой с одинаковым идентификатором базы данных, тогда у вас будет два разных идентификатора листка. – Manuel

+0

Спасибо, что указали это. – user2441511

0

Я решил это. Я создал «hashmap» между идентификатором базы данных и идентификатором формы листовки (leaflet_id) при загрузке фигур на карте. Затем в «draw: edit» я нашел идентификатор базы данных объекта, отредактированный пользователем, с помощью «key» = leaflet_id. Таким образом, я смог сохранить изменения, сделанные пользователем в одной записи базы данных.