遍历 Leaflet 地图层。

8
我正在使用Leaflet JS构建我的地图,但是我选择图层时遇到了一些问题。
我想将我的地图适配到一个多边形上。Leaflet为地图上的每个元素生成一个Leaflet ID,但这些ID是随机的。因此,我想创建一个数组,将每个Leaflet ID与已知的多边形ID关联起来。
这个概念来自于这里如何从地图外部与叶片标记层交互?,但我不确定如何实现它。
对象'map._layers'存储所有元素,包括每个多边形的ID。所以我按照以下方式循环:
var idstore = [];   
for (var x in map._layers) {
  // here idstore[x['polyid']] = x;
}

现在我可以使用该数组将我的多边形ID与Leaflet ID关联起来。结果数组应如下所示:
array('polygonid'=>'leafletid','155447'=>'478','748745' => 479);

我的问题是循环没有正确工作。我只能看到前两条记录,实际上它们是覆盖层(地图瓦片)。但这些元素确实在该对象中。

我做错了什么?

1个回答

13
一个不错的第一步是查看Leaflet参考文档,并使用文档中记录的.eachLayer函数,而不是在私有变量上使用for循环。
var idstore = [];
map.eachLayer(function(layer){
    // ...
});

1
我一直在使用 eachLayer。如何跳出这个循环? - Jeff
1
你不需要使用传统的循环,eachLayer 不是一个传统的循环。 - tmcw
2
我明白了。我扩展了自己的 eachLayer 并使其在类似于 jQuery 的 .each 中断时中断,谢谢。 - Jeff
你的代码是什么,Jeff? - Jack

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接