h5調用百度地圖api實現定位


提醒:經測試,在HBiuldX打包的Wep2App中有效, 在手機瀏覽器中無效,未探究原理,僅是實現項目所需功能,后續弄明白后再補充.

首先去百度地圖開發官網,申請開發者賬號,然后在控制台創建應用,類型選擇瀏覽器端, 申請成功后查看應用,會看到申請到的訪問應用(ak),如下圖:

 

 

以上前置工作做好后,着手實現h5的功能實現:

1.先在jsp頭部引用剛才申請到的api:

<script type="text/javascript" src="http://api.map.baidu.com/api?v=2.0&ak=自己申請到的ak"></script>

2.創建一個div來展示地圖:

<div id="mapDiv" style="width: 100%;height: 100%;background-color: #000000;position: absolute;">
  <p id="allmap" style="width: 80%;height: 80%;position: absolute;margin: 10%;"></p>
  <button type="button" class="btnBg" id="btnMapSet" style="margin-left: 10%;bottom: 5%;position: absolute;display: block;">定位確認</button>
</div>

<button type="button" class="btnBg" id="btnLocation" onclick="getLocation()" style="display: inline-block;">顯示當前定位</button>

 

3.實現的js方法:

//顯示當前定位調用方法
function getLocation(){   plus.nativeUI.showWaiting();//顯示等待動畫   plus.geolocation.getCurrentPosition(showPosition, showError);//h5+獲取定位的經緯度,獲取成功則調用showPosition,失敗則調用showError. } function showPosition(position){   var lng = position.coords.longitude;//經度   var lat = position.coords.latitude;//緯度   //alert('經度:'+lng+',緯度:'+lat);   showBaiDuMap(lng,lat);//經緯度作為入參,執行百度地圖的方法 } function showError(error){   switch(error.code) {   case error.PERMISSION_DENIED:     alert("定位失敗,用戶拒絕請求地理定位");     break;   case error.POSITION_UNAVAILABLE:     alert("定位失敗,位置信息是不可用");     break;   case error.TIMEOUT:     alert("定位失敗,請求獲取用戶位置超時");     break;   case error.UNKNOWN_ERROR:     alert("定位失敗,定位系統失效");     break;   } } function showBaiDuMap(lng,lat){   // 百度地圖API功能   //地圖初始化   var map = new BMap.Map("allmap");   var gpsPoint = new BMap.Point(lng,lat);   map.centerAndZoom(gpsPoint,18);   //設置定位按鈕位置   //var opts = {anchor:BMAP_ANCHOR_BOTTOM_RIGHT}   //將定位控件添加到地圖上   //map.addControl(new BMap.GeolocationControl(opts));   //設置縮放按鈕位置及類型   var ove={anchor:BMAP_ANCHOR_TOP_RIGHT,type:BMAP_NAVIGATION_CONTROL_ZOOM}   //添加縮放按鈕   map.addControl(new BMap.NavigationControl(ove));   var geolocation = new BMap.Geolocation();   //坐標轉換完之后的回調函數   translateCallback = function (data){
    plus.nativeUI.closeWaiting();//關閉等待動畫     if(data.status === 0) {       var new_point=data.points[0];//這是轉換后的百度坐標       var marker = new BMap.Marker(new_point);       map.addOverlay(marker);              map.centerAndZoom(new_point,20);       map.panTo(new_point);//地圖中心移動到定位的點       var gc = new BMap.Geocoder();       gc.getLocation(new_point, function(rs){         var addComp = rs.addressComponents;         console.log(rs.address);//地址信息
        
        //定位點添加點擊監聽,自己寫的,按照實際需求修改         marker.addEventListener("click", function(){           layer.msg(rs.address);    });
        //地圖下方的定位確認按鈕,自己寫的,按照實際需求修改         $("#btnMapSet").click(function (){           layer.msg(rs.address);//提示窗形式展示定位的地址           $("#mapDiv").fadeOut(300);//地圖框漸隱         });       });     }   }   setTimeout(function(){     var convertor = new BMap.Convertor();     var pointArr = [];     pointArr.push(gpsPoint);
    //將gps定位坐標轉為百度定位坐標,轉換成功后調用回調函數translateCallback.     convertor.translate(pointArr, 1, 5, translateCallback)
  }, 1000);
}

效果預覽:

 

js方法中的layer.msg()等方法是用到的layer,可百度下載 ,在頭部引用即可使用

ps:暫時記錄, 后續待修改完善優化.

 


免責聲明!

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



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