2017-03-01 56 views
2

概述获取精确的距离在2 GPS坐标xamarin

我创建使用需要获得在给定范围内(约3米)分xamarin C#移动应用程序。有随纬度和经度,我需要做的多点就是:

  • 获取currentPosition我在哪里从手机
  • 站在查找currentPosition(细胞GPS)之间的距离,和其他多点
  • 显示其中谈到下给定的范围的那些(3米的条件)

============================ ========================================

我做了什么:

  • 为了得到currentPosition,我使用plugin geolocator。在其positionChanged(),它被设置currentPosition可变我使用的(这是时间可持续运行和不断变化的currentPosition

  • 要获得currentPosition和其他固定点之间的距离,我使用HaversineFormula

  • 然后取那些来自在3米的距离

的================================== ===========================

问题我面对

  • 作为currentPosition正在汽车无改变,纬度和经度有时少一种高精度(小数点后7位),有时高度一种高精度(15位),并且当计算出的距离,这是一个巨大的差异。即使我不移动我的移动设备(静态),它仍然不断更新currentPosition
  • 即使它们在不到1米的范围内,它也不会显示附近的点。 HaversineFormula有问题吗?

如何在设备静态时控制current position

我已经测试了建筑物和阳台外的整个代码以获得更好的结果,但无法解决此问题。

+0

只是一个快速评论,你知道GPS的精度具有至少3米的可能的错误?所以找到3米范围内的物体我认为是不会一直工作的... – Pikoh

+0

什么是最大误差?我准备将半径从3米改为10米,但距离仍不准确 –

+0

根本就不是这方面的专家,所以这可能是不可能的,但是你可以在数据改变你的位置变量之前过滤数据吗?如果是这样,这听起来像[卡尔曼滤波器]的经典用例(https://en.wikipedia.org/wiki/Kalman_filter)。 – jcb

回答

1

只是一个更新..我能够得到附近的点。 问题在于使用geolocator获取当前位置。我不知道为什么它在获取当前位置坐标时不起作用,但错误率非常高。 无论如何,现在我已经实施Google Play服务融合位置apis来获取位置并提供高准确度。

所以任何人如果要实现这类功能的,你可以去这个API