【发布时间】:2017-05-15 20:56:45
【问题描述】:
是否有可能在反应原生地理定位中获得 GPS 精度?我想知道在任何给定时间内结果可能会不同多少米,但我找不到它是否可能。
【问题讨论】:
是否有可能在反应原生地理定位中获得 GPS 精度?我想知道在任何给定时间内结果可能会不同多少米,但我找不到它是否可能。
【问题讨论】:
是的。您可以通过调用 React Native
的 Geolocation 类的 getCurrentPosition() 方法获得准确性此方法允许我们随时请求用户的位置。它接受三个参数 —— 一个成功回调、一个错误回调和一个配置对象。成功回调将传递一个如下所示的对象:
{
"timestamp": 1484669056399.49,
"coords": {
"accuracy": 5,
"altitude": 0,
"altitudeAccuracy": -1,
"heading": -1,
"latitude": 37.785834,
"longitude": -122.406417,
"speed": -1
}
}
【讨论】:
测量的 GPS 误差可能非常不同。它可以从4米甚至40米。这一切都取决于您使用的设备的类别、背后的数学准确性,甚至取决于您是在移动还是静止不动。 您可以阅读 GPS 标准的规范以获取更多信息,但从我的角度来看,不可能说 X 是您的结果中的固定错误。您应该专注于允许最小化此错误的数学,例如您可以使用低通滤波器和/或卡尔曼滤波器
【讨论】:
这是一个使用 navigator.geolocation.getCurrentPosition 的示例 我正在填充要与 react-native-maps MapView 组件一起使用的标记集合。
async _mapLocation() {
Alert.alert(''+this.state.markers.length);
await navigator.geolocation.getCurrentPosition(
position => {
var x: LatLng = {
latitude: position.coords.latitude,
longitude: position.coords.longitude,
};
var tempMarkers = this.state.markers;
tempMarkers.push({latlng: x, title: '', description: ''});
this.setState({markers: tempMarkers});
},
error => {
Alert.alert(error.message);
},
{ enableHighAccuracy: true, timeout: 20000, maximumAge: 1000 }
)
}
【讨论】: