百度地图开放平台-JavaScriptAPI使用事件绑定的时候发现一个设计缺陷(移动设备),以下是具体情况说明。
/** 创建地图函数 **/
var map = new BMap.Map("allmap");
var point = new BMap.Point(lng, lat);
/** 绑定触摸结束事件 **/
map.addEventListener("touchend", getPoint);
/**
* 地图点击回调函数,用来获取经纬度
* @param {Object} e 百度点击参数,包含很多信息
*/
function getPoint(e){
point = new BMap.Point(e.point.lng, e.point.lat);//定义一个中心点坐标
}
代码段主要创建了一个地图实例,绑定了一个点击(触摸结束)事件。希望的用户使用场景是:
打开地图,用户可以用双指来控制地图缩放级别,可以拖动地图位置,并且单击选中自己想要的位置,然后程序获取用户点击位置的经纬度,并给对应位置添加一个标注。
然而,事与愿违。本人使用touchend事件绑定获取经纬度的函数,但是发现一个问题,即用户在移动设备上缩放地图或者拖动地图位置等其他接触地图的操作时,也会触发touchend事件,这个体验相信没有哪位朋友会喜欢,希望百度地图API的开发者能给移动端一个可用的单独的"CLICK"事件。
个人尝试过使用以下事件来满足本人的需求
1,Click 左键单机触发事件
移动端JS-Click事件本身就有兼容性问题,这个锅不给百度地图背...
2,Touchend 触摸结束时触发事件
百度地图API针对移动设备的事件类型只有以下四种:
touchstart 触摸开始时触发此事件,仅适用移动设备。(自 1.5新增)
touchmove 触摸移动时触发此事件,仅适用移动设备。(自 1.5新增)
touchend 触摸结束时触发此事件,仅适用移动设备。(自 1.5新增)
longpress 长按事件,仅适用移动设备。(自 1.5新增)
如果有朋友发现本人上述的问题是不存在的问题,请指出,感谢之至!如果也有遇到该问题的朋友也可以一起讨论一下