MapBoxGL 绘制。为什么事件中的 "FeatureTarget "没有定义,而我可以看到它的值?

问题描述 投票:0回答:1

我想做的是访问 featureTarget 从MapboxGL返回的鼠标事件对象的属性。

我的代码是这样的。

// map is the instance of MapboxGL
map.on('mousemove', e => {
    console.log("***");
    console.log(e);
    console.log(e.featureTarget);
    console.log("***");
});

然后Chrome浏览器的控制台就会这样显示

***
 n {point: c, lngLat: B, originalEvent: MouseEvent, type: "mousemove", _defaultPrevented: false, …}
featureTarget: bs {type: "Feature", _vectorTileFeature: qa, properties: {…}, layer: {…}, source: "mapbox-gl-draw-cold", …}
lngLat: B {lng: 172.4191589376344, lat: -43.49662499361186}
originalEvent: MouseEvent {isTrusted: true, screenX: 561, screenY: 524, clientX: 561, clientY: 421, …}
point: c {x: 442, y: 289}
target: Map {_moving: false, _zooming: false, transform: wi, _bearingSnap: 7, _renderFrameCallback: ƒ, …}
type: "mousemove"
_defaultPrevented: false
defaultPrevented: (...)
__proto__: F
undefined
***

我超级困惑... 第二行显示的是 featureTarget 成员,但在第三行没有定义! 如你所见,并没有打错字。

有谁知道为什么我不能访问 featureTarget 值?

javascript mapbox-gl-js mapbox-gl-draw
1个回答
0
投票

在不调查的情况下,我想说的是,有时Chrome和Firefox在这样的情况下可能会给出非常误导性的结果--预览(当你记录一个对象时)与将一个属性正式评估为一个字符串并不完全相同。我猜想 featureTarget 是一个getter,在本例中,它的值为 undefined.

要真正理解发生了什么,更好的方法是在该函数中设置一个断点,并单独评估每个表达式,直到你得到一个更清晰的画面。

© www.soinside.com 2019 - 2024. All rights reserved.