получить контроль над наложением только для некоторых объектов * .geojson - PullRequest
0 голосов
/ 07 февраля 2019

Я читаю и форматирую свою коллекцию объектов с помощью:

function onEachFeature(feature, layer) {
  if (feature.properties.popupContent == null)
       {return null}
       else
       {return layer.bindPopup(feature.properties.popupContent)};
 };

function MarkerStyle (feature,latlng) {
  if (feature.properties.markerSymbol == null)
  {return L.marker(latlng);}
  else
  {return L.marker(latlng, {icon:  L.icon({iconUrl:
                               feature.properties.markerSymbol})});}
  };

var daten =  $.ajax(overlay).done(function(data) {
    data = JSON.parse(data);
    daten = L.geoJson(data, 
            {pointToLayer: MarkerStyle,
            onEachFeature: onEachFeature}).addTo(map);
    return daten});

L.control.layers(baseLayers, overlayMaps).addTo(map);

В моей коллекции объектов есть точки и многоугольники.Как добавить элемент управления наложением ТОЛЬКО для полигонов?Я пытался с фильтром, но ничего не получалось.Спасибо за чтение кода!

Gruss, wonk

Спасибо, теперь я понимаю, что функция фильтра используется только для уменьшения функций, отображаемых на карте.Правильно?Это не мое намерение.

Я хочу элемент управления для КАЖДОГО полигона в коллекции объектов.Я сейчас попробовал:

  var polygons =  L.geoJSON();
  var overlayLayers = null; 
  var controls = L.control.layers(baseLayers,overlayLayers).addTo(map);

  function onEachFeature(feature, layer) {
    if(feature.properties.control != null)
        {polygons.addData(feature)
                .bindPopup(feature.properties.popupContent);
         polygons.addTo(map);
         polygon = polygons;
        controls.addOverlay(polygon,feature.properties.control);
        polygon = null;
        };
  if (feature.properties.popupContent == null)
       {return null}
            };

Пока это работает, я получаю контроль для каждого многоугольника.Но полигоны исчезают, только если я деактивирую ВСЕ элементы управления полигонами.Я хочу деактивировать отдельные полигоны!

Gruss, wonk

1 Ответ

0 голосов
/ 11 февраля 2019

Я нашел решение для задачи:

var overlayLayers = null; 
var controls = L.control.layers(baseLayers, overlayLayers).addTo(map);

function onEachFeature(feature, layer) {
    var ObjektLayer = L.geoJSON();
        ObjektLayer.addData(feature);
    if (feature.geometry.type == "Polygon" )
        {if (feature.properties.control != null)
            {controls.addOverlay(ObjektLayer,feature.properties.control);
            };
        if (feature.properties.popupContent != null)
            {ObjektLayer.bindPopup(feature.properties.popupContent);
            };
        ObjektLayer.addTo(map);  
        };
 };

Gruss, wonk

...