react-native-amap-geolocation埋坑之路

折騰了一晚上的安卓端高德定位獲取經緯度,剛剛搞定,差點氣的抓狂,第三方包的報錯信息不夠友好,導致一直沒找到錯誤點。

引入了第三方包react-native-amap-geolocation

import { PermissionsAndroid } from "react-native";
import { init, Geolocation } from "react-native-amap-geolocation";

// 對於 Android 需要自行根據需要申請權限
await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION);

// 使用自己申請的高德 App Key 進行初始化
await init({
  ios: "9bd6c82e77583020a73ef1af59d0c759",
  android: "043b24fe18785f33c491705ffe5b6935"
});

Geolocation.getCurrentPosition(({ coords }) => {
  console.log(coords);
});

一開始由於默認下最新包,然後自動下了包版本1.02,調定位一直報錯error is not a function,看了下作者的release發佈日子,才更到1.01,怕是見了鬼一樣的坑我,果斷降包指定到1.01。調用沒報錯,然後返回結果如下圖,找不到正確的定位結果。

多次試驗,仔細覈對了配置,都沒找到問題。然後嘗試了連續定位,發現了錯誤信息

import { init, addLocationListener, start, stop } from "react-native-amap-geolocation";


// 對於 Android 需要自行根據需要申請權限
await PermissionsAndroid.request(PermissionsAndroid.PERMISSIONS.ACCESS_COARSE_LOCATION);

// 使用自己申請的高德 App Key 進行初始化
await init({
  ios: "9bd6c82e77583020a73ef1af59d0c759",
  android: "043b24fe18785f33c491705ffe5b6935"
});

// 添加定位監聽函數
addLocationListener(location => console.log(location));
// 開始連續定位
start();
// 在不需要的時候停止定位
stop();

"KEY錯誤 請到http://lbs.amap.com/api/android-location-sdk/guide/utilities/errorcode/查看錯誤碼說明,錯誤詳細信息:auth "

確認自己在高德開放平臺創建的應用,key值填寫是正確的,後來發現原因是未填寫調試版安全碼SHA1,高德官方文檔只表明發佈版必填,調試版選填。調試階段默認未走自己生成的簽名打包處理,而是走的dubugger簽名文件打包編譯,通過以下命令拿到了調試版安全碼SHA1,正確得到了定位信息。

keytool -v -list -keystore ~/.android/debug.keystore

   (PS: 參考文章https://www.jianshu.com/p/dcfca6041154)

之後調整ios端發現一個問題,拿到的結果值內不包含地址信息,查了下包的issues和高德文檔,看到ios默認不返回逆地理信息,默認,需要添加配置。

 

添加 _manager.locatingWithReGeocode = YES 到 ios/Libraries/AMapGeolocation.xcodeproj/AMapGeolocation.m 內

if (!_manager) { 
    // XXXXXXXX;
    // Xxxxxxxx;
    _manager.locatingWithReGeocode = YES; 
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章