我尝试在用户移动0.1米时尝试获得坐标。但是即使我不动,它也给了我日志,而且它们的价值也不相同。例如;
这是firts值:
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});
}
我在哪里做错?
EDİ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米时,我添加了远距离窗口以给我一个位置。但这总是在每10或15秒内给我。我在哪里犯错?
您可以通过设置enableHighAccuracy: true
来启用高精度,但是正式文档指出,由于使用框架Geotork API,因此navigator.geolocation
在Android中的准确性降低了,而是使用Google位置服务API,该API均与Google和React进行React API本机建议是因为它更有效,准确。