反思
好久沒寫部落格了,最近比較忙,這段時間忙的差不多了,部落格一定要堅持寫下去。
概述
最近客戶提出了新的需求:在客戶操作節點增加地圖定位,以便獲取操作節點時候的地理位置,經過調研發現,官方提供的有個叫cordova-plugin-geolocation的外掛,在ios上可以直接使用,但是在天朝因為某些網路原因不能給正常使用,並且在網上很少能夠搜尋到關於這方面的文章,就去在github上找一些第三方提供的外掛去實現。這裡記錄一下,防止以後走彎路。
1. 申請百度的祕鑰 百度祕鑰申請地址
2. 安裝外掛:
ionic plugin add https://github.com/mrwutong/cordova-qdc-baidu-location --variable API_KEY="<API_KEY>"
複製程式碼
3. 使用方法
在需要獲取位置資訊的地方直接使用以下程式碼:
baidu_location.getCurrentPosition(function ( message ) {
console.debug(message);
}, function ( message ) {
console.debug(message);
});
複製程式碼
第一個函式是成功的回撥,第二個是失敗的回撥。
##切記
- 在安裝了外掛之後,千萬記得要先
ionic remove platform android
,然後再執行ionic platform add android
命令,不然外掛不能正確的執行,事實上,每一次修改外掛的內容,都要執行上面的兩個操作,才能使外掛正常執行 - 如果你使用sdk23版本進行打包的,你就要注意了,在最新的android6.0上面,和以前的許可權授權機制已經不同,如果使用23版本的進行打包,在android6.0以上的手機上執行不會給出獲取地理位置許可權的彈窗,務必改為23以下的版本進行編譯
- 獲取成功的話,預設是隻給出經緯度資訊的,如果要獲取定位的地址的具體資訊,要在外掛裡面的
BaiduLocation.java
檔案把option.setIsNeedAddress(false);
改為option.setIsNeedAddress(true);
- 預設返回的是一個字串,對於現在json這麼流行的情況下,當然是獲得json格式的資料比較讓人喜歡,這個時候坐著已經替我們封裝好了,只需要在
BaiduLocation.java
檔案中把PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, sb.toString());
改為PluginResult pluginResult = new PluginResult(PluginResult.Status.OK, json.toString());
,你就可以獲得一個json格式的字串了
最後
上面的內容大多數是在github上找到的,這裡只是寫上了自己遇到的一些問題,分享出來,這裡附上github地址:GitHub地址