我想做的是访问 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
值?
在不调查的情况下,我想说的是,有时Chrome和Firefox在这样的情况下可能会给出非常误导性的结果--预览(当你记录一个对象时)与将一个属性正式评估为一个字符串并不完全相同。我猜想 featureTarget
是一个getter,在本例中,它的值为 undefined
.
要真正理解发生了什么,更好的方法是在该函数中设置一个断点,并单独评估每个表达式,直到你得到一个更清晰的画面。