2016-11-02 4 views
1

У меня есть куча полигонов, которые хранятся в базе данных. Я хотел бы добавить их на карту таким образом, чтобы их можно редактировать с помощью панели инструментов leaflet-draw. Хотя теперь полигоны добавляются к карте, я не могу их редактировать.Добавить существующие многоугольники листовки в существующий слой листовка

Я думаю, это потому, что они не добавлены к layerGroup(), к которым добавляются вновь нарисованные фигуры.

Пожалуйста, помогите.

+1

ли это решить проблему? – Manuel

+0

Большое вам спасибо! – codejunkie

ответ

2

Вы должны добавить свои полигоны в функцию drawItemsGroup! Скажем, var polyLayers = dbArray; - это массив вашей базы данных с многоугольниками. Сначала создайте группу объектов с вашими нарисованными элементами, например: var drawnItems = new L.FeatureGroup(); и добавьте их на карту: map.addLayer(drawnItems);. Тогда вам просто необходимо перебрать свои многоугольники базы данных и добавить их к drawenItems FeatureGroup:

for(layer of polyLayers) { 
     drawnItems.addLayer(layer); 
    }; 

Теперь слои добавляются к карте и доступны для редактирования.

Здесь идет EXAMPLE:

var drawnItems = new L.FeatureGroup(); 
    map.addLayer(drawnItems); 

    var polyLayers = []; 

    var polygon1 = L.polygon([ 
     [51.509, -0.08], 
     [51.503, -0.06], 
     [51.51, -0.047] 
    ]); 
    polyLayers.push(polygon1) 

    var polygon2 = L.polygon([ 
     [51.512642, -0.099993], 
     [51.520387, -0.087633], 
     [51.509116, -0.082483] 
    ]); 
    polyLayers.push(polygon2) 

    // Add the layers to the drawnItems feature group 
    for(layer of polyLayers) { 
     drawnItems.addLayer(layer); 
    } 
+0

Добавление к этому вопросу. Я хотел бы сохранить формы, отредактированные пользователем в БД. Должен ли я просто выполнять поиск грубой силы, сравнивая latlngs с их предыдущими значениями в событии «draw: edit» или есть лучший метод? – codejunkie