Geolocation
Geolocation
Geolocation API扩展了Web规范:https://developer.mozilla.org/en-US/docs/Web/API/Geolocation
作为浏览器的polyfill,这个API可以通过navigator.geolocation
全局使用 - 你不需要import
它。
配置和权限
只有原生代码的项目
本部分仅适用于react-native init
使用Create React Native App创建的项目或已经退出的项目。有关弹出的更多信息,请参阅创建React Native App存储库的指南。
iOS
您需要NSLocationWhenInUseUsageDescription
在Info.plist中包含密钥才能在使用该应用时启用地理位置。当您使用创建项目时,默认情况下启用地理定位react-native init
。
为了在后台启用地理位置,您需要在Info.plist中包含'NSLocationAlwaysUsageDescription'键,并在Xcode的'功能'选项卡中添加位置作为背景模式。
Android
要请求访问位置,您需要将以下行添加到您的应用AndroidManifest.xml
:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
Android API> = 18位置还将包含一个mocked布尔值,以指示位置是否是从模拟提供者创建的。
方法
static setRNConfiguration(config)
设置将在所有位置请求中使用的配置选项。
选项
iOS
skipPermissionRequests
- 默认为false
,如果true
您在使用Geolocation API之前必须请求权限。
static requestAuthorization()
根据pList上配置的密钥请求合适的位置权限。如果设置了NSLocationAlwaysUsageDescription,它将请求总是授权,但如果设置NSLocationWhenInUseUsageDescription,它将请求InUse授权。
static getCurrentPosition(geo_success, geo_error?, geo_options?)
用最新的位置信息调用一次成功回调。支持的选项:timeout(ms),maximumAge(ms),enableHighAccuracy(bool)在Android上,如果位置被缓存,可以立即返回,或者它会请求更新,这可能需要一段时间。
static watchPosition(success, error?, options?)
每当位置发生变化时调用成功回调。支持的选项:timeout(ms),maximumAge(ms),enableHighAccuracy(bool),distanceFilter(m),useSignificantChanges(bool)