我正在尝试使用地理定位 API在 react-native 中实现自动检测用户位置功能, 但是如果位置服务被禁用,它不会像在各种 Android 应用程序中那样要求用户激活它,它要求用户使用它来激活它谷歌位置服务,然后获取用户的位置。
任何人都可以建议,我该如何实现这个功能。还有什么方法可以同时适用于 ios 和 android 吗?
我正在尝试使用地理定位 API在 react-native 中实现自动检测用户位置功能, 但是如果位置服务被禁用,它不会像在各种 Android 应用程序中那样要求用户激活它,它要求用户使用它来激活它谷歌位置服务,然后获取用户的位置。
任何人都可以建议,我该如何实现这个功能。还有什么方法可以同时适用于 ios 和 android 吗?
您可以使用react-native-permissions在 iOS 和 Android 上轻松请求位置权限。
如果您只需要自动检测地理位置,那么更好和最简单的方法是使用"navigator.geolocation"
. 您可以获取有关其用法的更多详细信息,以在此处获取基于浏览器的 API 的位置。
您甚至不需要导入,因为它已经被您的浏览器继承了。您可以直接在类中使用:
class className extends Component {
state = {
initialPosition: 'unknown',
lastPosition: 'unknown',
}
watchID: ? number = null;
componentDidMount = () => {
navigator.geolocation.getCurrentPosition(
(position) => {
const initialPosition = JSON.stringify(position);
this.setState({ initialPosition });
},
(error) => alert(error.message),
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
);
this.watchID = navigator.geolocation.watchPosition((position) => {
const lastPosition = JSON.stringify(position);
this.setState({ lastPosition });
});
}
componentWillUnmount = () => {
navigator.geolocation.clearWatch(this.watchID);
}
}