React Native Geolocation 在 IOS 上无法正常工作
Posted
技术标签:
【中文标题】React Native Geolocation 在 IOS 上无法正常工作【英文标题】:React Native Geolocation is not working properly on IOS 【发布时间】:2019-06-21 03:07:32 【问题描述】:我在 React-Native 中使用 Geolocation 来接收我当前的位置以加载我周围的对象。下面是我的代码。
getCurrentPosition()
console.log("checkLocation", "getCurrentPosition1");
navigator.geolocation.getCurrentPosition(
position =>
const coords = position;
if (coords !== undefined)
console.log("checkLocation", "getCurrentPosition trigger");
this.setState(
currentCoordinate: coords,
prevCoorForGet: coords,
prevCoorForUpdate: coords
);
this.props.saveCurrentLocation(
currentLocation:
latitude: coords.latitude,
longitude: coords.longitude
);
this.loadContent(coords);
,
error =>
console.log(
"checkLocation",
"getCurrentPosition " + JSON.stringify(error)
),
enableHighAccuracy: true,
timeout: 60000,
maximumAge: 3600000
);
问题是这段代码第一次运行良好。但是当我导航到另一个场景并返回时,它不再起作用并给我一个超时错误。有时有效,有时无效。请帮我解决它。
【问题讨论】:
你有什么解决办法??? @AshishSinghRawat 我的解决方案是使用enableHighAccuracy = false
重新调用getCurrentLocation
,如果它在第一次超时失败时使用enableHighAccuracy = true
。无论如何,这仍然不是一个好的解决方案
【参考方案1】:
即使在页面之间导航并返回地图屏幕之后,这个在我的项目中也能正常工作(ios 和 android)。
navigator.geolocation.getCurrentPosition(
(position) =>
// user location's latitude and longitude
let latitude = parseFloat(position.coords.latitude);
let longitude = parseFloat(position.coords.longitude);
console.log('location position: ', position);
let region =
latitude: latitude,
longitude: longitude,
latitudeDelta: 0.0522,
longitudeDelta: 0.0321,
;
// to store region data
this.setState(region: region);
//animate to user current location
this.map.animateToRegion(region,1000)
,
(error) => console.log('position error!!!', error),
enableHighAccuracy: false, timeout: 3000
);
我希望它也适用于您的项目
编辑
如果还是不行
/**
* when return the page this listener will trigger
*/
this.props.navigation.addListener('willFocus', (payload) =>
// call location method again
this.getLocation()
);
【讨论】:
感谢评论,超时错误非常随机。有时它像魅力一样起作用,但有时需要很长时间才能获得。我客人可能是因为enableHighAccuracy
设置为true
。 False
正在工作,但我害怕这个。【参考方案2】:
试试下面的代码,这似乎对我有用
import Geolocation from 'react-native-geolocation-service';
componentWillUnmount()
Geolocation.stopObserving();
【讨论】:
我会尝试并尽快回复您。谢谢你!【参考方案3】:在 componentWillMount() 中使用你的函数,这样每次组件挂载时......它的函数都会被执行
【讨论】:
这不是我问题的答案。我在getCurrentPosition
中遇到了超时错误。以上是关于React Native Geolocation 在 IOS 上无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
仅在 iOS 上没有弹出询问权限,未确定权限,react-native-community/geolocation
使用 geolocation react-native 时出错
react-native-geolocation-service 在调试模式下正常工作,但在发布模式下不工作
当我使用 react-native-geolocation-service 时,为啥 android 会寻找 RNCGeolocation?
react-native 中的 navigator.geolocation.getCurrentPosition 是不是与本地地理定位方法一样准确?