在混合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的出现坐标偏差的解决的主要内容,如果未能解决你的问题,请参考以下文章

android开发 百度地图怎么获取线的经纬度

百度地图开发怎么申请密钥

百度地图开发中怎么把一个地址转换为经纬度

UI5-技术篇-混合移动开发-3-百度地图

显示经纬度的地图

[转]百度地图API详解之地图坐标系统