//单纯的获取,不应用到地图上 var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ if(this.getStatus() == BMAP_STATUS_SUCCESS){ console.log(JSON.stringify(r)); }else { console.log('failed'+this.getStatus()); } }); //应用到地图上 var map = new BMap.Map("allmap"); //allmap为显示地图容器的ID var point = new BMap.Point(116.331398,39.897445); map.centerAndZoom(point,12); var geolocation = new BMap.Geolocation(); geolocation.getCurrentPosition(function(r){ if(this.getStatus() == BMAP_STATUS_SUCCESS){ var mk = new BMap.Marker(r.point); map.addOverlay(mk); map.panTo(r.point); }else { console.log('failed'+this.getStatus()); } });下面是html5 plus获取经纬度的方法:
注:html5获取的经纬度是GPS坐标,不能直接用在百度地图上,需要转换成百度坐标,即BD-09。上面的代码已经转换过了。
mui.plusReady(function(){ var curLat = plus.webview.currentWebview().lat; var curLon = plus.webview.currentWebview().long; initMap(curLat,curLon); }) function initMap(curLat,curLon){ //将传递的坐标转为百度坐标 var bdPos = bd_encrypt(curLon, curLat); var point = new BMap.Point(bdPos.bd_lon, bdPos.bd_lat); //创建点坐标 //设置百度地图 var map = new BMap.Map('map'); //map为显示百度地图的容器的ID map.centerAndZoom(point,18); //设置地图中心 //自定义图标 var icon = new BMap.Icon('../images/bdmap_marker.png', new BMap.Size(66,47), { anchor: new BMap.Size(33,33) }); var marker = new BMap.Marker(point, { icon: icon }); map.addOverlay(marker); //加入覆盖物 } //火星坐标转百度坐标 function bd_encrypt(gg_lon, gg_lat){ var X_PI = Math.PI * 3000.0 / 180.0; var x = gg_lon, y = gg_lat; var z = Math.sqrt(x * x + y * y) + 0.00002 * Math.sin(y * X_PI); var theta = Math.atan2(y, x) + 0.000003 * Math.cos(x * X_PI); var bd_lon = z * Math.cos(theta) + 0.0065; var bd_lat = z * Math.sin(theta) + 0.006; return { bd_lat: bd_lat, bd_lon: bd_lon }; }