在官网项目中,需要使用一个地图,展示产品的分布区域及数量。希望的交互是,鼠标放上标点,tooltip展示地点和数量等信息。鼠标滚动,则页面随着滚动。但是鼠标事件是被地图代理了的,鼠标滚动意味着地图的缩放。
我们首先想到的就是关闭地图的缩放
const scene = new Scene({
id: 'map',
map: new GaodeMap({
zIndex: 0,
pitch: 0,
style: 'light',
center: [36.753416,33.142173],
zoom: 1,
rotateEnable: false,
zoomEnable: false, // 关闭地图缩放
dragEnable: false // 关闭拖拽
}),
logoVisible: false,
})
这个设置了之后,我们发现鼠标在地图上是滚不动的状态,就是我们无论如何滚动鼠标,页面都没有动静。其实就是我们的鼠标事件被地图给代理了,但是他这里没有处理我们禁用了缩放和拖拽之后,将鼠标事件脱离代理。
然后我们就开始想解决办法:
scene.on('mousewheel', (ev) => {
document.documentElement.scrollTop += ev.originEvent.deltaY
})
以此记录一下这个问题的解决办法,也加深一下自己对这个属性的了解。