在混合app开发过程中使用百度地图api的出现坐标偏差的解决
Posted jihuaqiang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在混合app开发过程中使用百度地图api的出现坐标偏差的解决相关的知识,希望对你有一定的参考价值。
在项目中使用ngCordova的$cordovaGeolocation模块获取当前位置经纬度,当展示在百度地图中时发现有误差(我的测试误差为1.7公里左右),查资料发现百度地图经纬度与普通Gps获取的经纬度并不一样,解决办法参考百度开放地图论坛官方贴(http://bbs.lbsyun.baidu.com/forum.php?mod=viewthread&tid=121352&extra=page%3D1)。
我用的是官方给的第二种方式,代码参考如下:
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("获取地理位置失败") });
以上内容为原创,如有错误,望指出,谢谢
以上是关于在混合app开发过程中使用百度地图api的出现坐标偏差的解决的主要内容,如果未能解决你的问题,请参考以下文章