出现问题的原因

因为百度地图手机端默认的事件是拖动,屏蔽了其他事件,原生的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();
});