看看这个功能:
function addNewFeatureToGeoJsonLayerGroup(newGeoJsonData) {
var newGeoJSONfeature = L.geoJson(newGeoJsonData);
myFeaturesMap[newGeoJsonData.properties.objectID] = newGeoJSONfeature;
myGeoJsonLayerGroup.addLayer(newGeoJSONfeature);
}
来源:in-place Update Leaflet GeoJSON feature
我认为你必须:
layerGroup
(因此,对于每个要素,您都有一个图层
在layerGroup
)我getFeatures()
layerGroup
的{{1}}行看不到任何内容。我是否需要遍历每一层?
更新:The L.geoJson
API seems to be missing an API that would make it symmetric.
答案 0 :(得分:2)
如果要获取给定图层组中的子图层/要素列表,则可以使用layerGroup.getLayers()
(也适用于GeoJSON图层组)。
如果您想要访问非常特定的子图层而不直接引用它,而只是某种形式的ID(通常是GeoJSON属性),则会出现问题。在这种情况下,Leaflet不知道您使用哪个属性作为ID,因此它无法提供开箱即用的方法。简单的解决方法是将您的ID的单独映射/哈希/字典维护到Leaflet对应的层,如您提到的source以及您链接到的Leaflet问题的last post中所做的那样
请注意,它与Layer Group在内部的工作方式非常相似:它维护子层的哈希,为它们分配内部_leaflet_id
属性。
如果你没有维护这样的哈希值,那么我恐怕你必须遍历每个子图层,并扫描你用作ID的属性,直到找到你的匹配。
如果真的希望摆脱那个并行哈希,但是每次都要避免循环,我们可以想象覆盖Leaflet如何使用_leaflet_id
并使用你自己的ID代替。但您还需要为Leaflet内部图层提供额外的唯一ID ...