gpt4 book ai didi

javascript - 从图层集合中搜索/检索原始容器传单图层的最佳方法

转载 作者:行者123 更新时间:2023-12-03 08:20:58 29 4
gpt4 key购买 nike

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

//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*/);
//......

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

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

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

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

 //Get json content from the worldlayer Layer
var json = worldLayer.toGeoJSON();
var key =...,
var value = ..-;
for(var i =0; i < json.features.length; i++){
var resulJson = searchJsonByKeyAndValue(json.features[i],key,value);
//now work with resultJson....
}

//key is the id and the value is what i looking for e.g. 456
function searchJsonByKeyAndValue(json,key,value){
for (var i = 0; i < json.length; i++) {
try {
if (json[i].hasOwnProperty(key)) {
if (json[i][key] == value) {
return json[i];
}
}
}catch(e){
alert(e.message);
}
}
return null;
}

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

我的问题:除了其他信息之外,有没有办法找到具体原始层的json对象信息?

例如“worldLayer”,我知道“libraries”中也存在特定信息,因此我想检索值“libraries”或对象层库。

现在,我通过向各个层的每个特征添加特征 json 对象中的进一步信息来解决这个问题,调用“originLayers”,因此当我使用我所说明的过程恢复 json 对象时,我什至恢复了所需的信息;但要做到这一点,我必须去分析所有层的 GeoJSON(不是很小),并为每个功能添加新信息。还有其他方法可以改善一切吗?

预先感谢您的帮助。

最佳答案

我认为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

关于javascript - 从图层集合中搜索/检索原始容器传单图层的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33754978/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com