定位服务计算
Posted
技术标签:
【中文标题】定位服务计算【英文标题】:Location service calculations 【发布时间】:2013-01-11 14:38:39 【问题描述】:我创建了一个应用程序,它每 1 分钟将手机位置(使用 GPS 卫星)发送到我的 mysql 数据库。
一个位置有时可能会给您不同的结果,例如 st。 x # 5 或圣。 ×#2-8。 这对我来说是个问题,因为如果我在同一个位置停留 12 小时(睡觉时),我的数据库将被几乎相同的位置淹没。
我的问题是我如何避免这种情况,在整个 12 小时内,我将获得一个位置,如果可能是最准确的(不太重要)。也许有一个选项可以检查手机是否在移动?如果不停止跟踪?
【问题讨论】:
if (currentSituation.equals(previousSituation)) doNothing(); else sendLocation();
有什么问题
android 开发者建议like this
如果您的位置没有改变,请不要将其加载到服务器。
您将在 GPS 位置中获得差异,您必须对其进行补偿(gabe 建议的 minDistance 方法是一个很好的解决方案)。请参阅en.wikipedia.org/wiki/… 了解更多信息。
嘿,gabe,很抱歉编辑,只是为了修复显示不太好的链接。
【参考方案1】:
Android 开发者建议like this
在requestLocationUpdate()
方法中使用最小距离。
要确定最小距离,您可以评估最后一个位置的准确度并将阈值设置为准确度的 1.5 倍。
此外,您可以设置minTime
,具体取决于您想要更新位置的频率。还有一个代码教程。
http://developer.android.com/guide/topics/location/strategies.html#BestEstimate
您可以在哪里确定当前位置是否优于新位置,并且仅 然后发送到服务器。
【讨论】:
谢谢你,但有一些我不明白的地方,我向 requestLocationUpdate 发送了一个 30 米的参数,当我的手机不移动时,我一直在获取位置.. 怎么会? 可能是gps不太准确,室内肯定有问题。您使用的是哪个位置提供商?网络还是GPS?不看代码就很难提供帮助。 代码是线条的基调,所以我会用 GPS 来总结:) 我不使用网络提供商,因为它提供的位置非常不准确,但有时(主要是室内)gps 可以'不生成位置,所以我正在考虑添加网络提供商。是的,它在室内进行了测试。【参考方案2】:我将从数据库的角度回答你的问题。
如果自上次间隔以来数据库有任何更改,您应该只插入数据库。
例如,在您睡觉的前一天晚上,您将 x1, y1 发送到带有时间戳 t1 的数据库。您将继续从 t2、t3、t4 将 x1、y1 发送到数据库。您可以将其从数据库中丢弃。一旦开始移动,您将在 t1000 处插入 x2、y2。
在数据库中,只有 t1 和 t1000 两条记录。
如果你想知道 t10 的位置,那么你应该从 t1 得到结果。
【讨论】:
以上是关于定位服务计算的主要内容,如果未能解决你的问题,请参考以下文章