百度地图的覆盖物在手机上无法点击

在解决问题之前,我阅读了以下文章

百度地图自定义覆盖物手机端添加点击事件无效

https://blog.csdn.net/Seven521m/article/details/80353046

百度地图自定义覆盖物,在手机上无法监听click事件

https://blog.csdn.net/m0_37967720/article/details/82868548

百度地图自定义覆盖物手机端添加点击事件无效

https://blog.csdn.net/weixin_40918067/article/details/89504694

Vue 移动端项目 百度地图 点击事件无效、不触发 解决方案

https://blog.csdn.net/Davis_Dxs/article/details/82425211

【知乎】百度地图自定义覆盖物手机端无法触发click问题

https://zhuanlan.zhihu.com/p/28160341

发现《Vue 移动端项目 百度地图 点击事件无效、不触发 解决方案》这篇文章还是可圈可点的,思路清奇。 


 

出现问题的原因

因为百度地图手机端默认的事件是拖动,屏蔽了其他事件,原生的Marker是可以触发的,但是自定义的覆盖物是不可以的。

从上面的话,我们就可以得出,禁用拖拽就可以恢复点击事件(click)了!

那么在什么时候禁用拖拽什么时候启用拖拽呢?

地图加载完成禁用拖拽,触摸移动时启用拖拽,触摸结束禁用拖拽!

解决问题

在百度的JavaScript API v3.0类参考

http://lbsyun.baidu.com/cms/jsapi/reference/jsapi_reference_3_0.html

方法返回值描述
enableDragging()none启用地图拖拽,默认启用
disableDragging()none禁用地图拖拽
事件参数描述
tilesloaded{type, target}当地图所有图块完成加载时触发此事件
touchstart{type, target, point,pixel}触摸开始时触发此事件,仅适用移动设备
touchmove{type, target, point,pixel}触摸移动时触发此事件,仅适用移动设备
touchend{type, target, point,pixel}触摸结束时触发此事件,仅适用移动设备
longpress{type, target, point,pixel}长按事件,仅适用移动设备

代码 

/*地图加载完毕*/
map.addEventListener("tilesloaded", function () {$("div.anchorBL").remove();//隐藏百度LOGO $("div.BMap_cpyCtrl.BMap_noprint.anchorBL").remove();//隐藏版权  // 初始化地图 禁止拖动   注:虽禁止拖动,但是可以出发拖动事件map.disableDragging();});// TODO: 触摸移动时触发此事件 此时开启可以拖动。虽然刚初始化该地图不可以拖动,但是可以触发拖动事件。
map.addEventListener("touchmove", function (e) {
map.enableDragging();
});
// TODO: 触摸结束时触发次此事件  此时开启禁止拖动
map.addEventListener("touchend", function (e) {
map.disableDragging();
});

 


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部