1. 程式人生 > >在混合app開發過程中使用百度地圖api的出現坐標偏差的解決

在混合app開發過程中使用百度地圖api的出現坐標偏差的解決

百度 api call cordova overlay forum gpo ext ddr

在項目中使用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的出現坐標偏差的解決