获取2个GPS坐标xamarin之间的准确距离
Posted
技术标签:
【中文标题】获取2个GPS坐标xamarin之间的准确距离【英文标题】:Get accurate distance between 2 GPS coordinates xamarin 【发布时间】:2017-03-01 11:51:33 【问题描述】:概述
我正在使用 xamarin c# 创建移动应用程序,它需要在给定范围(3 米)内获取点。经纬度有多个点,我需要做的是:
通过手机获取currentPosition
我所在的位置
求currentPosition
(小区GPS)与其他多个点的距离
显示在给定范围内的那些(要求 3 米)
================================================ ======================
我做了什么:
要获得currentPosition
,我使用的是plugin geolocator
。在其positionChanged()
上,它正在设置我正在使用的currentPosition
变量(这是持续运行和更改currentPosition
)
为了得到currentPosition
和其他固定点之间的距离,我使用HaversineFormula
然后获取距离小于 3 米的那些
================================================ ===============
我面临的问题
由于currentPosition
不断变化,经纬度有时精度低(小数点后7位)有时精度高(15位),计算距离时,差异很大。即使我没有移动我的移动设备(静态),它仍在不断更新currentPosition
。
即使它们在不到 1 米的范围内,它也不会显示附近的点。 HaversineFormula
有什么问题吗?
设备静止时如何控制current position
?
我已经在建筑物和露台外测试了整个代码以获得更好的结果,但无法解决这个问题。
【问题讨论】:
简单评论一下,你知道gps精度至少有3米的可能误差吗?因此,我认为在 3 米范围内寻找物体不会一直有效...... 最大误差是多少?我准备把半径从3米改成10米,但距离还是不准确 根本不是这方面的专家,所以这可能是不可能的,但你能在数据改变你的位置变量之前过滤数据吗?如果是这样,这听起来像是 Kalman filter 的经典用例。 准确度会因手机而异,也会因“相同”型号中的 GPS 接收器芯片组而异。手机中的 GPS 天线很便宜,全球 15 米的“准确度”是一个“安全”的假设(会比这更好吗,是的,通常情况下,但是为了保证你需要外部天线)。您将需要过滤和平滑“原始”结果以保持稳定的位置.... 对于如此小的距离,使用半正弦就像使用尺度来测量玻璃刀片的宽度......正如@jcb 指出的那样,使用卡尔曼滤波器等算法将有助于稳定您的位置,然后您可以在需要之后应用 hasrsine... 【参考方案1】:只是一个更新.. 能够获得附近的点。 问题在于使用地理定位器获取当前位置。我不知道为什么它在获取当前位置坐标时对我不起作用,但错误率如此之高。 无论如何,现在我已经实现了谷歌播放服务融合位置 api 来获取位置并提供高精度。
所以任何人如果你想实现这样的功能,你可以去这个 api
【讨论】:
以上是关于获取2个GPS坐标xamarin之间的准确距离的主要内容,如果未能解决你的问题,请参考以下文章
JavaScript 地理定位:检查距 2 gps 坐标的距离