获取Leaflet layerGroup

时间:2017-02-09 02:47:27

标签: javascript leaflet

看看这个功能:

function addNewFeatureToGeoJsonLayerGroup(newGeoJsonData) {
    var newGeoJSONfeature = L.geoJson(newGeoJsonData);
    myFeaturesMap[newGeoJsonData.properties.objectID] = newGeoJSONfeature;
    myGeoJsonLayerGroup.addLayer(newGeoJSONfeature);
}

来源:in-place Update Leaflet GeoJSON feature

我认为你必须:

  1. 创建新图层
  2. 将图层修改为适合
  3. 将此图层添加到layerGroup(因此,对于每个要素,您都有一个图层 在layerGroup
  4. getFeatures() layerGroup的{​​{1}}行看不到任何内容。我是否需要遍历每一层?

    更新:The L.geoJson API seems to be missing an API that would make it symmetric.

1 个答案:

答案 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 ...