这是我的第一个问题,因此,如果我没有分享足够的细节,或者它不符合提出一个好的问题的所有标准,我深表歉意。
有没有一种方法,可以使用id以外的其他功能,在调用leafletJS'L.geoJSON
之后创建的一组图层中删除一个图层?具体来说,我想删除一个基于ZONE_CODE
的图层(请参见下面的var geodata_zones
和var 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"
},
]
]};
感谢大家的支持!