0

Я работаю с lealflet апи, где пользователь может рисовать фигуры карты (изображение) ...Как добавить слои и обновления контроля уровня динамически: Листовка

Первоначально уровень управления (обработка 1 слой) добавлена ​​базовая карта с использованием imageoverlay ......

Я добавил кнопку с идентификатором «newLyer» на странице, где нажмите событие обрабатывает создание нового слоя ..... т.е. пользователь может создать новый слой и контроль уровня обновления (который теперь обрабатывает 2 слоя) ....

Я использовал несколько методов для создания слоев и добавление управления но не ....

Добавление нового слоя layerGroup

var layerGroup = new L.LayerGroup(), 
        imageOverlayUrl = 'aa.jpg', 
        // New imageoverlay added to the layergroup 
        imageOverlay = new L.ImageOverlay(imageOverlayUrl, bounds).addTo(layerGroup), 
        // New featuregroup added to the layergroup 
        featureGroup = new L.FeatureGroup().addTo(layerGroup); 

LayerControl, где мне нужно, чтобы добавить элемент управления (если я правильно)

 var layerControl = new L.control.layers({ 
      'Main': layerGroup, 
      //here i need to add new layer control 
      }, null, { collapsed: false }).addTo(map); 

функция OnClick с до сих пор статического кода, это будет осуществляться по щелчку

 $('#newLayer').click(function addNewLayer() { 
      // Second layergroup not added to the map yet 
      var layerGroupNew = new L.LayerGroup(), 
       imageOverlayUrlNew = 'bb.png', 
       // New imageoverlay added to the second layergroup 
       imageOverlayNew = new L.imageOverlay(imageOverlayUrlNew, bounds).addTo(layerGroup2), 
       // New featuregroup added to the second layergroup 
       featureGroupNew = new L.FeatureGroup().addTo(layerGroupNew); 
     }); 

В Short

Первоначально я один слой с его контролем, теперь OnClick функционировать создает новый слой, который будет добавлен к карте, но как я могу добавить этот слой в layerControl ....

Если кто-то имеет представление о том, как сделать этот вид вещи, пожалуйста помощь ,,,, любого вида помощи или ссылок будет оценен .... Спасибо за ваше время

ответ

2

Если вы посмотрите документацию для L.Control.Layers:

http://leafletjs.com/reference.html#control-layers

Вы увидите, что L.Control.Layers имеет addBaseLayer метод:

http://leafletjs.com/reference.html#control-layers-addbaselayer

Добавляет базовый слой (кнопка радио запись) с заданным именем в элемент управления.

Таким образом, вы можете сделать:

layerControl.addBaseLayer(newBaseLayer, 'My New BaseLayer'); 

И вы хорошо идти. Как вы видите, вы могли бы избавить себя от необходимости публиковать этот вопрос, если бы взглянули на reference. Листовка очень хорошо документирована. Я лично узнал больше всего, что знаю о Лифлете, прочитав документы полностью один раз в два раза. Удачи вам в вашем проекте, ура!

+0

вы супергерой спасибо за ответ, я прочитал некоторые и пропустил некоторые и понял немного, поскольку я новичок в js ,,, моей ошибке ...... –