【React Native】文件翻譯閱讀紀錄 - APIs - Geolocation

by - 上午9:00

Facebook Open Source React Native


Geolocation

Geolocation API擴展了 Geolocation web spec.

作為瀏覽器polyfill,此API可通過 navigator.geolocation global 獲得 - 您無需導入它。

配置和權限

iOS

您需要在Info.plist中包含NSLocationWhenInUseUsageDescription鍵以在使用應用程序時啟用地理定位。使用react-native init創建項目時,默認情況下會啟用地理位置。

為了在後台啟用地理定位,您需要在Info.plist中包含“NSLocationAlwaysUsageDescription”鍵,並在Xcode的“功能”選項卡中將位置添加為後台模式。

如果您將CocoaPods用於React Native,請確保包含RCTGeolocation子podspec。

Android

要請求訪問位置,您需要將以下行添加到應用的 AndroidManifest.xml 中:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Android API> = 18 Positions還將包含一個模擬布爾值,用於指示位置是否是從模擬提供程序創建的。

Android API> = 23需要執行額外檢查步驟,並使用PermissionsAndroid API請求ACCESS_FINE_LOCATION權限。如果不這樣做可能會導致嚴重的崩潰。

Methods


參考

Methods

setRNConfiguration()

Geolocation.setRNConfiguration(config);
設置將在所有位置請求中使用的配置選項。
參數:
NAMETYPEREQUIREDDESCRIPTION
configobjectYesSee below.
支持的選項:
  • skipPermissionRequests(boolean,僅限iOS) - 默認為false。如果為true,則必須在使用Geolocation API之前請求權限。

requestAuthorization()

Geolocation.requestAuthorization();
根據pList上配置的密鑰請求合適的位置權限。如果設置了NSLocationAlwaysUsageDescription,它將請求始終授權,但如果設置了NSLocationWhenInUseUsageDescription,它將請求InUse授權。

getCurrentPosition()

Geolocation.getCurrentPosition(geo_success, [geo_error], [geo_options]);
使用最新的位置信息調用成功回調一次。
參數:
NAMETYPEREQUIREDDESCRIPTION
geo_successfunctionYes使用最新位置信息調用。
geo_errorfunctionNo遇到錯誤時調用。
geo_optionsobjectNo見下文。
支持的選項:
  • timeout (ms) -是一個正值,表示允許設備返回位置的最大時間長度(以毫秒為單位)。默認為INFINITY。
  • maximumAge (ms) -是一個正值,表示可以返回的可能緩存位置的最大年齡(以毫秒為單位)。如果設置為0,則表示設備無法使用緩存位置,必須嘗試檢索實際當前位置。如果設置為Infinity,無論年齡如何,設備都將始終返回緩存位置。默認為INFINITY。
  • enableHighAccuracy (bool) - 是否表示是否使用GPS的布爾值。如果設置為true,則會請求GPS位置。如果設置為false,則會請求WIFI位置。

watchPosition()

Geolocation.watchPosition(success, [error], [options]);
只要位置發生變化,就會調用成功回調。返回watchId(數字)。
參數:
NAMETYPEREQUIREDDESCRIPTION
successfunctionYesInvoked whenever the location changes.
errorfunctionNoInvoked whenever an error is encountered.
optionsobjectNoSee below.
Supported options:
  • timeout (ms) - 是一個正值,表示允許設備返回位置的最大時間長度(以毫秒為單位)。默認為INFINITY。
  • maximumAge (ms) -  是一個正值,表示可以返回的可能緩存位置的最大年齡(以毫秒為單位)。如果設置為0,則表示設備無法使用緩存位置,必須嘗試檢索實際當前位置。如果設置為Infinity,無論年齡如何,設備都將始終返回緩存位置。默認為INFINITY。
  • enableHighAccuracy (bool) - 是否表示是否使用GPS的布爾值。如果設置為true,則會請求GPS位置。如果設置為false,則會請求WIFI位置。
  • distanceFilter (m) -返回新位置之前距離上一個位置的最小距離。設置為0表示不過濾位置。默認為100米。
  • useSignificantChanges (bool) - 使用電池效率高的原生重要更改API返回位置。僅當設備檢測到重要距離被破壞時才會返回位置。默認為FALSE。

clearWatch()

Geolocation.clearWatch(watchID);
參數:
NAMETYPEREQUIREDDESCRIPTION
watchIDnumberYesId as returned by watchPosition().

stopObserving()

Geolocation.stopObserving();
停止觀察設備位置的變化。 此外,它刪除以前註冊的所有偵聽器。

請注意,只有先前調用了geolocation.watchPosition(successCallback,errorCallback)方法,此方法才有效。



You May Also Like

0 意見