一、問題描述:用手機瀏覽器訪問百度地圖,地圖的click事件點擊無效。有時點擊能夠獲取經緯度,有時候沒有反應。
//TODO:click 事件 移動端會被屏蔽
map.addEventListener("click",function(e){
console.log("該點的經緯度:"+e.point.lng+","+e.point.lat);
})
二、解決方案
手機端 禁用地圖拖拽 click事件就會被觸發
var map;
/**
* 加載地圖
*/
function loadMap() {
map = new BMap.Map("allmap"); // 創建Map實例
map.centerAndZoom(new BMap.Point(116.404, 39.915), 11);// 初始化地圖,設置中心點座標和地圖級別
//添加地圖類型控件
map.addControl(new BMap.MapTypeControl({
mapTypes:[
BMAP_NORMAL_MAP,
BMAP_HYBRID_MAP
]}));
map.setCurrentCity("北京"); // 設置地圖顯示的城市 此項是必須設置的
map.enableScrollWheelZoom(); //開啓鼠標滾輪縮放
var mapStyle = {
features: ["road", "building", "water", "land"]//隱藏地圖上的poi
};
map.setMapStyle(mapStyle);
//TODO:解決移動端 click事件點擊無效
map.addEventListener("touchmove", function (e) {
map.enableDragging();
});
// TODO: 觸摸結束時觸發次此事件 此時開啓禁止拖動
map.addEventListener("touchend", function (e) {
map.disableDragging();
});
// 初始化地圖 禁止拖動 注:雖禁止拖動,但是可以出發拖動事件
map.disableDragging();
map.addEventListener("click", function(e){
alert("該點的經緯度:"+e.point.lng+","+e.point.lat);
});
}