首页 > 代码库 > 在混合app开发过程中使用百度地图api的出现坐标偏差的解决
在混合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的出现坐标偏差的解决
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。