我正在使用传单中的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函数工作?
答案 0 :(得分:10)
根据source code,addData只需要1个arg:geojson。
addData将使用您在创建图层时传递的回调onEachFeature。
所以这应该有用
var myLayer = L.geoJson(false, {
onEachFeature: onEachFeature
}).addTo(this.map);
myLayer.addData(geojsonFeature);