之前項目中需要使用到定位功能,前邊的文章提到的坐標位置是有問題的,是國際坐標,國內的環境使用google地圖會出現問題,所以需要使用國內的地圖進行坐標解析,因為國內和國外的坐標體系不一致,需要通過轉換才能使用【具體原因請到網上自由查找】
1.先需要安裝插件,在項目的根目錄下運行命令
cordova plugin add cordova-plugin-geolocation
然后這里需要注意,你的跟模塊需要加入ngCordova才能使用,否則不能操作設備的,注入方式如下:
angular.module('app', ['ionic', 'ngCookies',
/*在該處注入*/ 'ngCordova' ]);
2.控制器中注入$cordovaGeolocation
3.添加如下代碼
// 根據GPS獲取獲取用戶所在位置 var getAutoLocation = function() { //GPS定位 scope.location = ''; $cordovaGeolocation.getCurrentPosition({ timeout: 10000, enableHighAccuracy: false }).then(function(position) { var gcj = coordtransform.wgs84togcj02(position.coords.longitude, position.coords.latitude); var baidu = coordtransform.gcj02tobd09(gcj[0], gcj[1]); var pt = new BMap.Point(baidu[0], baidu[1]); var gc = new BMap.Geocoder(); // 根據坐標獲取地址 gc.getLocation(pt, function(rs) { var addComp = rs.addressComponents; }); }, function() { // myToast.success('定位失敗!'); }); };
這里使用了兩個類庫
一個是coordtransform
地址是:
鏈接: https://pan.baidu.com/s/1nT7Qh90ndtZ3OquC-uy1bw 密碼: btsm【使用方法直接引用即可,也可以自己封裝。這個類庫是別人封裝的,現在找不到地址了,只好自己上傳了一個】
另外一個是Bmap,使用的是百度地圖的類庫,可以在網上直接下載,也有直接封裝好的ionic的服務和指令,可以自行查找