【React Native】文件翻譯閱讀紀錄 - APIs - Geolocation
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。
為了在後台啟用地理定位,您需要在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權限。如果不這樣做可能會導致嚴重的崩潰。
Android API> = 23需要執行額外檢查步驟,並使用PermissionsAndroid API請求ACCESS_FINE_LOCATION權限。如果不這樣做可能會導致嚴重的崩潰。
Methods
參考
Methods
setRNConfiguration()
Geolocation.setRNConfiguration(config);
設置將在所有位置請求中使用的配置選項。
參數:
NAME | TYPE | REQUIRED | DESCRIPTION |
---|---|---|---|
config | object | Yes | See below. |
支持的選項:
skipPermissionRequests
(boolean,僅限iOS) - 默認為false。如果為true,則必須在使用Geolocation API之前請求權限。
requestAuthorization()
Geolocation.requestAuthorization();
根據pList上配置的密鑰請求合適的位置權限。如果設置了NSLocationAlwaysUsageDescription,它將請求始終授權,但如果設置了NSLocationWhenInUseUsageDescription,它將請求InUse授權。
getCurrentPosition()
Geolocation.getCurrentPosition(geo_success, [geo_error], [geo_options]);
使用最新的位置信息調用成功回調一次。
參數:
NAME | TYPE | REQUIRED | DESCRIPTION |
---|---|---|---|
geo_success | function | Yes | 使用最新位置信息調用。 |
geo_error | function | No | 遇到錯誤時調用。 |
geo_options | object | No | 見下文。 |
支持的選項:
timeout
(ms) -是一個正值,表示允許設備返回位置的最大時間長度(以毫秒為單位)。默認為INFINITY。maximumAge
(ms) -是一個正值,表示可以返回的可能緩存位置的最大年齡(以毫秒為單位)。如果設置為0,則表示設備無法使用緩存位置,必須嘗試檢索實際當前位置。如果設置為Infinity,無論年齡如何,設備都將始終返回緩存位置。默認為INFINITY。enableHighAccuracy
(bool) - 是否表示是否使用GPS的布爾值。如果設置為true,則會請求GPS位置。如果設置為false,則會請求WIFI位置。
watchPosition()
Geolocation.watchPosition(success, [error], [options]);
只要位置發生變化,就會調用成功回調。返回watchId(數字)。
參數:
NAME | TYPE | REQUIRED | DESCRIPTION |
---|---|---|---|
success | function | Yes | Invoked whenever the location changes. |
error | function | No | Invoked whenever an error is encountered. |
options | object | No | See 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);
參數:
NAME | TYPE | REQUIRED | DESCRIPTION |
---|---|---|---|
watchID | number | Yes | Id as returned by watchPosition() . |
stopObserving()
Geolocation.stopObserving();
停止觀察設備位置的變化。 此外,它刪除以前註冊的所有偵聽器。
請注意,只有先前調用了geolocation.watchPosition(successCallback,errorCallback)方法,此方法才有效。
請注意,只有先前調用了geolocation.watchPosition(successCallback,errorCallback)方法,此方法才有效。
0 意見