当用户移动0.1米时,我试着得到坐标。但是即使我不动,它也给了我原木,而且它们也不是相同的值。例如;
这是第一个值:
lat2 : 38.4420875 lng2 : 27.1441123
这是第二个值:
lat2 : 38.4420843 lng2 : 27.1441643
这里是我的代码:
ComponentDidMounth() {
navigator.geolocation.getCurrentPosition(
(position) => {
this.setState({ initialPosition: position });
Latitude = position.coords.latitude;
Longitude = position.coords.longitude;
var lat = parseFloat(position.coords.latitude);
var lng = parseFloat(position.coords.longitude);
console.log("lat :",lat);
console.log("lng :",lng);
},
(error) => alert(JSON.stringify(error)),
{enableHighAccuracy: false, timeout: 20000, maximumAge: 1111000, distanceFilter: 0.1}
);
this.watchID = navigator.geolocation.watchPosition((lastPosition) => {
this.setState({ initialPosition: lastPosition });
Latitude = lastPosition.coords.latitude;
Longitude = lastPosition.coords.longitude;
var lat = parseFloat(lastPosition.coords.latitude);
var lng = parseFloat(lastPosition.coords.longitude);
console.log("lat2 :",lat);
console.log("lng2 :",lng);
},
(error) => alert(JSON.stringify(error)),
{enableHighAccuracy: false, timeout: 20000, maximumAge: 11111111, distanceFilter: 0.1});
}我做错了什么?
编辑İTED部分:
import Geolocation from 'react-native-geolocation-service';
this.watchID = Geolocation.watchPosition((lastPosition) => {
this.setState({ initialPosition: lastPosition });
Latitude = lastPosition.coords.latitude;
Longitude = lastPosition.coords.longitude;
var lat = parseFloat(lastPosition.coords.latitude);
var lng = parseFloat(lastPosition.coords.longitude);
console.log("lat2 :",lat);
console.log("lng2 :",lng);
},
(error) => alert(JSON.stringify(error)),
{enableHighAccuracy: true, timeout: 20000, maximumAge: 250, distanceFilter: 1});编辑部分的这段代码每10秒给出我的位置。当我移动1米时,我加上了distanceFilter,给出了位置。但它总是给我每10或15秒。我在哪里搞错了?
发布于 2019-03-08 15:14:23
您可以通过设置enableHighAccuracy: true来实现高精度,但是,由于官方文件 states navigator.geolocation在Android中不太准确,因为它使用了Framework,而使用Google Location Service API,这是谷歌和ReactiveNative推荐的,因为它具有更高的电池效率和准确性。
https://stackoverflow.com/questions/55064725
复制相似问题