H5頁面,百度地圖點擊事件


需求:用戶點擊地圖的時候獲取地址街道,編碼等詳細信息。

  然后看百度API文檔,看到了click事件,關鍵時候還是需要看文檔的。

 

實現

這樣子雖然在瀏覽器的手機模擬器下是沒有問題的

但是放在機器上測試的時候就出現問題了,有時候點擊不到,我一直以為是我手機的問題,然后我在代碼的第一行加上了alert但是發現電腦上沒問題,但是手機上不行,我用的是安卓,alert時有時無。然后就百度找了一下,https://www.jianshu.com/p/153cd2471576

實例:

var xArr = [];//存放橫坐標
var yArr = [];//存放縱坐標
//點擊事件獲取地址信息start------------------------
//手指觸摸屏幕的時候清空兩個數組
map.addEventListener("touchstart", function(e){
xArr.length = 0;
yArr.length = 0;
});
//如果滑動了屏幕,xArr和yArr將各存入兩個坐標值,即始末坐標值
map.addEventListener("touchmove",function(e){
xArr.push(e.targetTouches[0].pageX);
yArr.push(e.targetTouches[0].pageY);
});
map.addEventListener('touchend',function(e){
var far;
var flag = true;
//計算平移距離,區分滑動事件和點擊事件
if((xArr.length > 1) && (yArr.length > 1)){
far = (Math.abs(xArr[0]-xArr[1]))^2 + (Math.abs(yArr[0]-yArr[1]))^2;
if(far > 0){
flag = false;
}
}
if(flag){

map.clearOverlays(); //清除地圖上所有覆蓋物
map.centerAndZoom(new BMap.Point(e.point.lng, e.point.lat), 18);
map.addOverlay(new BMap.Marker(new BMap.Point(e.point.lng, e.point.lat))); //添加標注
var pt = e.point;
gc.getLocation(pt, function(rs){
lon=rs.point.lng;//經度
lat=rs.point.lat;//緯度
streetName = rs.addressComponents.street;//獲取街道名稱
myValue=rs.address;
$("#addrId").html(rs.address);//當前位置
});
}
});
//點擊事件獲取地址信息end------------------------

這樣就可以解決問題了


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM