地理位置反应原生
Posted
技术标签:
【中文标题】地理位置反应原生【英文标题】:GeoLocation React Native 【发布时间】:2019-08-20 10:05:22 【问题描述】:我正在尝试获取我的代码在 ios和android中,当用户拒绝时它不会抛出错误 位置权限。
AppState.addEventListener('change', this._handleAppStateChange);
this.geoFailure, geoOptions);
this.refresh();
geoSuccess = (position) => //Success callback when user allow the
location
this.setState(
ready:true,
where: lat:
position.coords.latitude,lng:position.coords.longitude
)
geoFailure = (err) => // i am not getting any error when user
denies the location permission in the
case of android.
this.setState(error: err.message);
console.log("Errror",err)
console.log(err.message)
if(err.message='User denied access to location services'&&Platform.OS==='ios')
this.props.screenName==='SPLASH'&&!this.state.ready?NavigatorService.navigate(LOCATION_PERMISSION):null;
refresh=()=> // Refreshing the list when the AppState becomes
active
let geoOptions =
enableHighAccuracy: false,
timeout: 30000,
maximumAge: 60 * 60 * 24
;
this.setState(ready:false, error: null );
navigator.geolocation.getCurrentPosition( this.geoSuccess, this.geoFailure, geoOptions);
如果是 ios,我可以将用户导航到另一个屏幕 如果它不提供位置权限,但在 当用户不提供时,它不会给出任何错误的android 地点。
我不知道怎么做,我是 react native 的新手。
我没有得到,我做错了什么。
任何帮助将不胜感激。
【问题讨论】:
您是否在android中获得了许可?如果是,那么android中的许可代码是什么? 是的,我已经获得了许可,它在 AndroidManifest.xml 中 Android api 23 及更高版本,您必须获取运行时权限,而不仅仅是清单 是的,我已经做到了 【参考方案1】:使用权限Android
import
PermissionsAndroid
from 'react-native';
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
);
if (granted === PermissionsAndroid.RESULTS.GRANTED)
Geolocation.getCurrentPosition(
(position) =>
addLocation(position.coords);
,
(error) =>
console.error(error);
,
enableHighAccuracy: true, timeout: 15000, maximumAge: 10000 ,
);
else
console.log('location permission denied');
【讨论】:
做一个回购并分享链接 有什么问题请分享以上是关于地理位置反应原生的主要内容,如果未能解决你的问题,请参考以下文章