zoukankan      html  css  js  c++  java
  • 在混合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("获取地理位置失败")
      });

    以上内容为原创,如有错误,望指出,谢谢

  • 相关阅读:
    抽取一个简单的按钮方法
    一些iOS笔试题目
    使用第三方框架 Masonry 实现自动布局
    AutoLayout适配
    iOS面试小题集锦
    大牛们的技术博客
    5、过滤流
    3、过滤文件夹
    1、File类简介
    贪婪模式和非贪婪模式
  • 原文地址:https://www.cnblogs.com/jihuaqiang/p/6958855.html
Copyright © 2011-2022 走看看