有没有一种方法可以通过id以外的属性来引用geoJSON leafletJS图层?

时间:2020-04-18 19:51:37

标签: leaflet

这是我的第一个问题,因此,如果我没有分享足够的细节,或者它不符合提出一个好的问题的所有标准,我深表歉意。

有没有一种方法,可以使用id以外的其他功能,在调用leafletJS'L.geoJSON之后创建的一组图层中删除一个图层?具体来说,我想删除一个基于ZONE_CODE的图层(请参见下面的var geodata_zonesvar geodata_regions而无需遍历所有图层查找与该ZONE_CODE匹配的那个。

其他项目背景: 区域分为多个区域。用户可以选择区域地图上的每个区域来设置配置文件。另一方面,区域地图包含所有区域,包括尚未设置配置文件的区域中的区域。显示区域地图时,我要删除所有尚未设置配置文件的区域中的所有区域。

region_layer具有一个属性(ZONE_CODE),我想直接引用该属性 ,例如:

region_layer.removeLayer('ZONE_CODE'= 'Z1')

目前,我是通过遍历图层集来做到这一点的,就像这样:

  var geojsonZones = geodata_zones.features;
  var zone_has_profile = false;

  [ logic for zone_has_profile boolean ]

    if (!zone_has_profile){
      region_layer.eachLayer(function (layer) {
        if(layer.feature.properties.ZONE_CODE == geojsonZones[i].properties.ZONE_CODE) {
            region_layer.removeLayer(layer);
        }
      });
    }

    zone_has_profile = false;
  }

这是region_layer构建的geodata_regions(见下文):

var region_layer = L.geoJSON(geodata_regions, {
  fillColor: "#208aae",
  fillOpacity: 0.5,
  color: "#000",
  weight: 1,
  opacity: 1,
  onEachFeature: function (feature, layer) {
    layer.on({
      'mouseover': overRegion,
      'mouseout': outRegion,
      'mouseclick': clickRegion,
    })
  }
}).addTo(regionmap);

以下是var geodata_zones的示例:

var geodata_zones = geodata_zones = {
  "type":"FeatureCollection",
  "crs":{
    "type":"name",
    "properties":{"name":"urn:ogc:def:crs:OGC:1.3:CRS84"}
  },
  "features":[
    {
      "type":"Feature",
      "properties":{
        "id":"Z1",
        "ZONE_CODE":"Z1",
        "ZONE_NAME":"SOUTH",
      },
      "geometry":{
        "type":"Polygon",
        "coordinates":[ omitted ]
      }
    },
  ]
};

以下是var geodata_regions的示例:

var geodata_regions = {
  "type":"FeatureCollection", 
  "features": [
    {
      "type":"Feature",
      "geometry":{
        "type":"Polygon",
        "coordinates":[ omitted ]
      },
      "properties":{
        "LOCAL_CODE":"Z1.4.A.01",
        "ZONE_CODE":"Z1",
      },
      "id":"Z1.4.A.01"
    },
  ]
]};

感谢大家的支持!

0 个答案:

没有答案