首页 > 解决方案 > 仅为某些 *.geojson 对象获取覆盖控制

问题描述

我阅读并格式化了我的功能集:

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);

我的特征集合中有点和多边形。如何仅为多边形添加叠加控件?我尝试使用过滤器,但没有任何效果。感谢您阅读代码!

格鲁斯,笨蛋

谢谢,我现在明白了,过滤功能仅用于减少地图上显示的特征。正确的?这不是我的本意。

我想要对特征集合中的每个多边形进行控制。我现在尝试:

  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}
            };

到目前为止,这有效,我得到了每个多边形的控件。但是,如果我停用所有多边形控件,多边形只会消失。我想停用单个多边形!

格鲁斯,笨蛋

标签: leafletcontrolsoverlaygeojson

解决方案


我现在找到了该任务的解决方案:

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);  
        };
 };

格鲁斯,笨蛋


推荐阅读