我有一个 OpenLayers map
变量,如下所示:
this.map = new Map({
target: 'map',
moveTolerance: 2,
layers: [this.capaFondo, this.capaPropia, this.vector],
view: new View({
projection: proyeccion,
center: fromLonLat([-1.629950, 42.62], proyeccion),
zoom: 9.3
})
});
我正在尝试处理这样的单击:
this.map.on('singleclick', function(evt) {
const p = new Point(evt.coordinate).transform(this.map.getView().getProjection(), proyeccion);
const properties = ['CP:geometry'];
const featureRequest = new WFS().writeGetFeature({
srsName: 'EPSG:25830',
featurePrefix: 'CP',
featureTypes: ['CadastralParcel'],
outputFormat: 'application/json',
propertyNames: properties,
filter: containsFilter('geometry', p, 'EPSG:25830')
});
}
但在函数内部,map
变量似乎未定义。
如何获取其中的map
值?任何帮助都会很棒!
最佳答案
函数
创建一个新的上下文。为了使其按照您期望的方式工作,您可以将 function (evt) {}
更改为箭头函数,如下所示:
this.map.on('singleclick', (evt) => {
const p = new Point(evt.coordinate).transform(this.map.getView().getProjection(), proyeccion);
const properties = ['CP:geometry'];
const featureRequest = new WFS().writeGetFeature({
srsName: 'EPSG:25830',
featurePrefix: 'CP',
featureTypes: ['CadastralParcel'],
outputFormat: 'application/json',
propertyNames: properties,
filter: containsFilter('geometry', p, 'EPSG:25830')
});
}
更多关于 this
如何在 JS 中工作的信息,请参阅 this great answer
关于javascript - Javascript 函数内未定义的 Angular 变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58872180/