在開發行動端 web 或webapp時,使用百度地圖 API 的過程中,經常需要透過手機定位來取得目前位置並在地圖上居中顯示出來,這就需要用到html5的地理定位功能。
navigator.gegeyge;
在取得座標成功之後會執行回呼函數callback; callback 方法的參數就是取得到的座標點;然後可以初始化地圖,設定控制項、中心點、縮放等級,然後在地圖中加入point的overlay:
var🎜>程式碼如下:
var map = new BMap. Map("mapDiv");//mapDiv為放地圖的div 的id
map.addControl(new BMap.NavigationControl());
map.addControl(new BMap.ScaleControl());
map.addControl(new BMap.OverviewMapControl());
map.centerAndZoom(point, 15);//point為坐標點,15為地圖縮放級別,最大級別是18
var pointMarker = new BMap. Marker(point);
map.addOverlay(pointMarker);
複製程式碼
複製程式碼
<script> <br />$(function(){ <br />navigator .geolocation.getCurrentPosition(translatePoint); //定位<br />}); <br />function translatePoint(position){ <br />var currentLat = position.coords.latitude; <br />var currentLon = position.coords.longitude; <br />var currentLon = position.coords. <br />var gpsPoint = new BMap.Point(currentLon, currentLat); <br />BMap.Convertor.translate(gpsPoint, 0, initMap); //轉換座標<br />} <br />function initMap(point){ <br />//初始化地圖<br />map = new BMap.Map("map"); <br />map.addControl(new BMap.NavigationControl()); <br />map.addControl(new BMap.ScaleControl()) ; <br />map.addControl(new BMap.OverviewMapControl()); <br />map.centerAndZoom(point, 15); <br />map.addOverlay(new BMap.Marker(point)) <br />} <br /> </script>
本人開發過程中覺得電腦的定位速度有點慢,常常無法取得座標導致地圖無法顯示,建議用手機測試,定位較快。
當然了,如果僅是開發行動端的網頁,就不需要使用jQuery,框架太大,可以換用其他輕量級的行動端的 js 框架。