获取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 坐标的距离

用GPS测得两个点两的坐标,怎样算两个点之间的距离和角度

GPS已知首尾坐标 如何求距离

GPS坐标的多点定位

谷歌地图(javascript API):从地址获取 GPS 坐标

Xamarin.Forms - 使用 Xamarin.Essentials 在两个坐标之间获取里程