在本机项目中,我需要检查地理位置。我写了这个
export default navigator => new Promise((resolve, reject) => {
if (navigator.geolocation.requestAuthorization) {
navigator.geolocation.requestAuthorization();
}
navigator.geolocation.getCurrentPosition(resolve, reject, {
timeout: 3000,
});
});
它可以工作,但有时我需要重新检查。在这种情况下,这个承诺总是返回与第一次相同的结果。
我用Google搜索,发现我应该添加
enableHighAccuracy: true
不幸的是,在 some 机器人上,其结果是从未获得任何坐标。所有iPhone都可以正常工作。
例如,它可在Motorola g5,Android 7.1上运行,但在Samsung SM-G530MU,Android 4.4.4和LG Nexus 5,Android 6.0.1上无法运行。
在这一点上,我决定妥协,但这显然不是一个好的解决方案。现在,一个应用程序永远不会更新Android上的坐标,但至少总会得到一些结果。
export default navigator => new Promise((resolve, reject) => {
if (navigator.geolocation.requestAuthorization) {
navigator.geolocation.requestAuthorization();
}
navigator.geolocation.getCurrentPosition(resolve, reject, {
timeout: 3000,
enableHighAccuracy: (Platform.OS === 'ios')
});
});
有人有什么主意,应该怎么做才能使Geolocation在Android上正常工作?某些版本可能需要某些权限,而其他版本不需要吗?其他版本?