gpt4 book ai didi

javascript - Javascript 函数内未定义的 Angular 变量?

转载 作者:行者123 更新时间:2023-12-01 00:27:18 25 4
gpt4 key购买 nike

我有一个 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com