我尝试在用户移动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});
}
我在哪里做错了?
编辑部分:
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秒一次。我在哪里弄错了?
答案 0 :(得分:0)
您可以通过设置enableHighAccuracy: true
来启用高精度,但是由于Official docs指出navigator.geolocation
在Android中准确性较低,因为它使用Framework GeoLocation API,而使用Google Location Service API Google和React Native均建议使用,因为它可以提高电池效率和准确性。