Назначить несколько групп функций в элементе управления редактированием при рисовании листовки

Как я могу назначить несколько групп функций в элементе управления редактированием,

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

Это группы,

var attLayerGroup = new L.FeatureGroup();
var photoLayerGroup = new L.FeatureGroup();

И это, как я назначаю управление группам,

    var drawControl = map.addControl(new L.Control.Draw({
    edit: {
        featureGroup: photoLayerGroup,attLayerGroup,
        poly: {
            allowIntersection: true
        }
    },
    draw: {
        polygon: {
            allowIntersection: false,
            showArea: true
        }

    }
}));

Это правильный способ назначить элемент управления Edit для FeatureGroup? Если нет, то как мы можем это сделать?


person Pavan    schedule 04.07.2017    source источник


Ответы (2)


Leaflet.Draw featureGroup не поддерживает несколько групп функций.

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

Второй вариант — иметь один экземпляр Leaflet.Draw и переключать группы функций с помощью переключателя.

person Jon West    schedule 06.07.2017

Если нет особого различия между двумя вашими исходными группами функций, просто скопируйте ссылку каждого отдельного слоя в новую родительскую группу функций и используйте последнюю как опцию Leaflet.draw featureGroup:

var fg = L.featureGroup();

photoLayerGroup.eachLayer(function (layer) {
  if (!layer instanceof L.LayerGroup) {
    fg.addLayer(layer);
  }
});

// Same for attLayerGroup.

new L.Control.Draw({
  edit: {
    featureGroup: fg
  }
});
person ghybs    schedule 07.07.2017