从图层集合中搜索/检索原始容器Leaflet图层的最佳方法

时间:2015-11-17 10:47:22

标签: javascript json leaflet layer geojson

这是一个愚蠢的问题,在我的传单/ javascript项目中,我有一百层,(我还没有创建,但我必须处理它),分为LayerGroup,FeatureGroup,MarkerCluster和GeoJSON,我需要创建单层根,包含进行一些研究的所有信息,然后一旦找到信息,我想检索包含信息的单个图层。因此,为了制作合并层,我执行以下代码:

  ...
  |> Enum.map(fn(url) -> HTTPoison.get!(transform_url((url)) end)

所以现在我想将所有这些层合并到一个唯一的层,L.geoJson和L.MarkerClusterGroup扩展了L.FeatureGroup,L.FeatureGroup扩展了L.LayerGroup,因此根层必须是L.LayerGroup,除非有人有更好的建议:

//My 100 Layer....
var library = new L.MarkerClusterGroup(/*some layer options*/);
var restaurant = new L.FeatureGroup(/*some layer options*/);
var house = new L.LayerGroup(/*some layer options*/);
var notClassified = new L.geoJson(content,/*some layer options*/);
//......

可选问题:这是最好的方法吗?

在创建了我的worldLayer后,我做了一些研究,例如跟踪分配给特定L.Marker的id或worldlayer的GeoJson上的特定Json对象。所以我认为最好的方法是使用WorldLayer的GeoJson结果:

var worldLayer = new L.LayerGroup(/*some layer options*/);
for(var layer in listOfAllLayers){
    worldlayer.addLayer(layer);
}
map.addLayer(worldLayer);

可选问题2:这是最好的方法吗?

我的问题:等信息中,有一种方法可以找到json对象信息的特定原始层吗? 例如,' worldLayer',我知道特定信息也出现在'图书馆'中,所以我想要挽回价值"图书馆"或对象图层库。 现在我解决了在各个层的每个特征中添加了特征json对象调用" originLayers"中的更多信息,所以当我用我已经说明的过程恢复json对象时,我甚至可以恢复所需的信息;但为了做到这一点,我必须去分析所有图层的GeoJSON(不是很小),并为每个单一功能添加新信息。还有另一种改善一切的方法吗? Ty提前帮忙。

1 个答案:

答案 0 :(得分:1)

我认为the hasLayer method of layerGroup是您需要的,而不是您的伪检索功能,以跟踪标记。

例如:

var map = map();
var a = layerGroup().addTo(map);
var b = featureGroup().addTo(a);
var c = featureGroup().addTo(a);
var marker = marker().addTo(b);

a.hasLayer(marker); // true
b.hasLayer(marker); // true
c.hasLayer(marker); // false