我正在构建一个本机应用程序,并且正在使用navigator.geolocation.getCurrentPosition。一切在iOS上都运行良好,但在Android上则更加复杂...
getLocation(){
//console.log(this.state.geolocation);
navigator.geolocation.getCurrentPosition(
position => {
const latitude = position.coords.latitude.toFixed(8);
const longitude = position.coords.longitude.toFixed(8);
this.setState(prevState => ({
geolocation: {
...prevState.geolocation,
latitude: parseFloat(latitude),
longitude: parseFloat(longitude)
}
}))
},
error => console.log(error.message),
{enableHighAccuracy: true, timeout: 30000, maximumAge: 1000}
)
}
如果我禁用highAccuracy,则一切正常,但是根据我在本机Geolocation文档上的红色描述,将enableHighAccuracy设置为true会使用GPS定位,这就是我所需要的,当我将其设置为true时,它不会位置,它只是忽略了我的功能,我得到的纬度和经度为null,但没有错误。 我已经在手机上启用了高精度定位功能,并且拥有android所需的权限:android:name =“ android.permission.ACCESS_FINE_LOCATION”。
此外,我正在使用的手机仅用于测试,没有任何SIM卡。但是我认为获取GPS位置不是问题吗?
我有点迷路,我想念什么吗?还有其他我没看到的事情吗?
[编辑]
我也在使用此权限:
async requestLocationPermission() {
try {
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
'title': 'Location Access Permission',
'message': 'app would like to use your location '
}
)
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
console.log("You can use the location")
} else {
console.log("Location permission denied")
}
} catch (err) {
console.warn(err)
}
}