传单 - 寻找将 onEachFeature 添加到现有 geojson 层的方法

Posted

技术标签:

【中文标题】传单 - 寻找将 onEachFeature 添加到现有 geojson 层的方法【英文标题】:leaflet - Looking for method of adding onEachFeature to existing geojson layer 【发布时间】:2014-10-15 16:18:05 【问题描述】:

我正在使用传单中的 geojson 数据。在http://leafletjs.com/examples/geojson.html 的指南中,他们写道有两种方法可以将 geojson 数据添加到地图:

"GeoJSON 对象通过 GeoJSON 层添加到地图中。要创建它并将其添加到地图中,我们可以使用以下代码:"

L.geoJson(geojsonFeature).addTo(map);

“或者,我们可以创建一个空的 GeoJSON 层并将其分配给一个变量,以便我们以后可以向其添加更多功能。”

var myLayer = L.geoJson().addTo(map);
myLayer.addData(geojsonFeature);

我目前正在使用最后一种方法(我正在创建一个空层并向其中添加数据)。我现在正在做的是我正在尝试添加一个 onEachFeature 函数。虽然我在使用 myLayer.addData 方法时无法正常工作。

在我的代码中,我使用的是this.geoJson.addData(geoJson, onEachFeature: onEachFeature );。其中geoJson 是实际的geoJson 字符串,“this.geoJson”是已创建并添加到地图的空geoJson 图层。虽然这不起作用。

但是,如果我在输入 geoJson 数据的同时创建一个新的 geoJson 图层,则一切正常:

L.geoJson(geoJson, 
    onEachFeature: onEachFeature
).addTo(this.map);

所以我主要想知道的是,在使用 layer.addData 函数添​​加数据时,我应该如何使 onEachFeature 函数正常工作?

【问题讨论】:

【参考方案1】:

根据source code , addData 只需要1个arg:geojson。

addData 将使用您在创建层时传递的回调 onEachFeature。

所以这应该可以工作

var myLayer = L.geoJson(false, 
    onEachFeature: onEachFeature
).addTo(this.map);

myLayer.addData(geojsonFeature);

【讨论】:

以上是关于传单 - 寻找将 onEachFeature 添加到现有 geojson 层的方法的主要内容,如果未能解决你的问题,请参考以下文章

如何将 flyto 传单功能添加到自定义 Svg 地图

将 mapbox 字标添加到传单

传单:如何将文本标签添加到自定义标记图标?

将哨兵图层添加到传单地图

将属性添加到将成为 geojson 选项的传单图层

如何将弹出窗口添加到折线中,当鼠标悬停在地图上的折线上时显示传单