我正在使用 react-map-gl 和 deck.gl 编写一个 Web 应用程序,我的挑战是正确设置鼠标事件。
如果我在deck.gl 上使用react-map-gl,deck.gl 图层不会收到我的鼠标事件,如果我反过来,react-map-gl 图层不会收到事件。
这是我正在使用的层/叠加层的简化列表(自下而上):
- react-map-gl 底图(使用 MapGL 反应组件)
- 带有 PathLayer 的 deck.gl 用于显示我航行过的轨迹
- react-map-gl 帆布覆盖,用于显示帆船位置标记,包括船速、风速等
- react-map-gl HTML 叠加层,用于在轨道上放置可点击的图像缩略图
<MapGL
{...this.state.viewState}
onViewportChange={viewport =>
this.setState({ viewState: viewport, panning: true })
}
mapboxApiAccessToken="...">
<DeckGL
viewState={this.state.viewState}
controller={false}
layers={this.getLayers()}
/>
<CanvasOverlay redraw={this._redrawCanvasOverlay} />
<HTMLOverlay
redraw={this._redrawHTMLOverlay}
/>
...
如果我像上面那样排列它们,可点击的图像缩略图可以工作,但deck.gl PathLayer 不会收到任何鼠标信息。
如果我反其道而行之,并将 MapGL 作为 DeckGL 的子项,则 PathLayer 可以正常处理事件,但我无法再单击图像缩略图。
将它放在一起的正确方法是什么,以便 react-map-gl 和 deck.gl 都允许交互?