ski*_*e3e 3 javascript leaflet typescript
我正在尝试传递一个参数以通过单击多边形来绑定它,我有以下内容:
var mapLayer = new L.TopoJSON(jsonMap, {style: style, onEachFeature: onEachFeature.bind(null,null,selectionManager), pane:'borders'}).addTo(this.map);
function onEachFeature(feature, layer, selectionManager) {
console.log(selectionManager)
layer.on({
mouseover: highlightFeature,
mouseout: resetHighlight,
click: dataFilter.bind(null,ID)
});
}
function dataFilter(selectionManager,e){
var layer = e.target;
var zoneName = layer.feature.properties.Index;
console.log(zoneName)
console.log(selectionManager);
}
Run Code Online (Sandbox Code Playgroud)
所以我的目标是读取 dataFilter 中的一个参数(在这种情况下是 selectionManager)
根据 Leaflet 文档,onEachFeature需要是一个接收两个参数(feature和layer)的函数。以Function.prototype.bind您使用它的方式使用它并不能满足您的要求。
相反,创建一个闭包:
function onEachFeatureClosure(dataFilter) {
return function onEachFeature(feature, layer) {
// Your own logic, that uses dataFilter as well as feature and layer
}
}
L.topoJSON(jsonMap, {
style: style,
onEachFeature: onEachFeatureClosure(selectionManager),
pane:'borders'
}).addTo(this.map);
Run Code Online (Sandbox Code Playgroud)
请注意,来自的返回值onEachFeatureClosure(selectionManager)是一个看起来像function onEachFeature(feat, layer) {...}.
| 归档时间: |
|
| 查看次数: |
1014 次 |
| 最近记录: |