0

我想要做的是访问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价值有任何想法吗?

4

1 回答 1

0

如果不进行调查,我会说有时 Chrome 和 Firefox 在这种情况下会给出相当误导的结果 - 预览(当您记录对象时)与正式评估字符串的属性并不完全相同。我猜这featureTarget是一个吸气剂,在这种情况下它正在评估为undefined.

真正了解正在发生的事情的更好方法是在该函数中放置一个断点并单独评估每个表达式,直到您获得更清晰的画面。

于 2020-06-15T23:37:03.780 回答