在传单中加载时将 ID 添加到 geojson 功能
Add ID to geojson feature on load in leaflet
我正在将 geojson 层加载到传单地图中。我想根据存储在 geojson 中的属性设置 svg 元素的 ID。
我假设我使用了 onEachFeature 函数,但我看不到如何在解析时设置功能的 ID。
如何分配元素的 ID?
可以,但不能使用L.GeoJSON
的onEachFeature
方法。这是因为以下原因:
var geoJsonLayer = L.geoJson(null, {
onEachFeature: function (feature, layer) {
// At this point 'layer._path' exists in the layer object
// but it will return as 'undefined' so this is of no use
// So the following doesn't work:
layer._path.id = 'feature-' + feature.properties.id
}
});
但是,如果您使用 L.GeoJSON
中的 eachLayer
方法,layer._path
将 return 实际的 SVG 路径元素,但是它只会在 GeoJSON 层之后执行此操作被添加到地图中。如果您在将图层添加到地图之前执行此操作,layer._path
仍将 return 为 undefined
。所以试试这个:
var geoJsonLayer = L.geoJson(data).addTo(map);
geoJsonLayer.eachLayer(function (layer) {
layer._path.id = 'feature-' + layer.feature.properties.id;
});
这是一个关于 Plunker 的工作示例:http://plnkr.co/edit/7IPHrO?p=preview
我正在将 geojson 层加载到传单地图中。我想根据存储在 geojson 中的属性设置 svg 元素的 ID。
我假设我使用了 onEachFeature 函数,但我看不到如何在解析时设置功能的 ID。
如何分配元素的 ID?
可以,但不能使用L.GeoJSON
的onEachFeature
方法。这是因为以下原因:
var geoJsonLayer = L.geoJson(null, {
onEachFeature: function (feature, layer) {
// At this point 'layer._path' exists in the layer object
// but it will return as 'undefined' so this is of no use
// So the following doesn't work:
layer._path.id = 'feature-' + feature.properties.id
}
});
但是,如果您使用 L.GeoJSON
中的 eachLayer
方法,layer._path
将 return 实际的 SVG 路径元素,但是它只会在 GeoJSON 层之后执行此操作被添加到地图中。如果您在将图层添加到地图之前执行此操作,layer._path
仍将 return 为 undefined
。所以试试这个:
var geoJsonLayer = L.geoJson(data).addTo(map);
geoJsonLayer.eachLayer(function (layer) {
layer._path.id = 'feature-' + layer.feature.properties.id;
});
这是一个关于 Plunker 的工作示例:http://plnkr.co/edit/7IPHrO?p=preview