码迷,mamicode.com
首页 > 移动开发 > 详细

在混合app开发过程中使用百度地图api的出现坐标偏差的解决

时间:2017-06-07 21:03:00      阅读:507      评论:0      收藏:0      [点我收藏+]

标签:func   center   function   map   win   over   point   call   注入   

在项目中使用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的出现坐标偏差的解决

标签:func   center   function   map   win   over   point   call   注入   

原文地址:http://www.cnblogs.com/jihuaqiang/p/6958855.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!