在项目中使用ngCordova的$cordovaGeolocation模块获取当前位置经纬度,当展示在百度地图中时发现有误差(我的测试误差为1.7公里左右),查资料发现百度地图经纬度与普通Gps获取的经纬度并不一样,解决办法参考百度开放地图论坛官方贴( )。
我用的是官方给的第二种方式,代码参考如下:
ionic框架,引入<script src="http://api.map.baidu.com/api?v=2.0&ak=你的密钥"></script>
并且在app内注入ngCordova;
controller内的代码如下:
var lat,long;var posOptions = {enableHighAccuracy: true};//设置定位精度$cordovaGeolocation .getCurrentPosition(posOptions) .then(function (position) { var lo=position.coords.longitude;//经度 var la=position.coords.latitude;//纬度 //开始转换坐标(GPS---百度坐标) $http({ method: 'GET', url: 'http://api.map.baidu.com/geoconv/v1/?coords='+lo+','+la+'&from=1&to=5&ak=你的秘钥' }).then(function successCallback(response) { //转换完成 long=response.data.result[0].x; lat=response.data.result[0].y; // 调用百度地图api显示 var map = new BMap.Map("map"); var pPoint = new BMap.Point(long, lat); map.centerAndZoom(pPoint, 18); var geoc = new BMap.Geocoder(); var mk = new BMap.Marker(pPoint); map.addOverlay(mk);geoc.getLocation(new BMap.Point(long, lat), function(rs){ if(rs){ var location=rs.addressComponents; $scope.myLocation=location.province+location.city+location.district+location.street+location.streetNumber+rs.surroundingPois[0].title; console.log($scope.myLocation); }}); }, function errorCallback(response) { window.alert("转换坐标失败,请检查网络") }); }, function(err) { window.alert("获取地理位置失败") });
以上内容为原创,如有错误,望指出,谢谢