在混合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("獲取地理位置失敗")
  });

以上內容爲原創,若有錯誤,望指出,謝謝php

相關文章
相關標籤/搜索