循环通过Leaflet Map图层

时间:2014-02-13 08:34:00

标签: javascript object maps leaflet

我正在使用Leaflet JS来构建我的地图,但是我在选择图层时遇到了一些问题。

我的目标是让我的地图适合多边形。 Leaflet为地图上的每个元素生成Leaflet ID,但这些ID是随机的。所以我想创建一个数组,将每个Leaflet ID与已知的多边形ID相链接。

这个概念来自How to interact with leaflet marker layer from outside the map?,但我不确定如何实现它。

对象'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 个答案:

答案 0 :(得分:5)

好的第一步是查看Leaflet reference documentation并使用记录的.eachLayer函数而不是私有变量的for循环。

var idstore = [];
map.eachLayer(function(layer){
    // ...
});