查找距我当前位置 100 米范围内的已保存位置

Posted

技术标签:

【中文标题】查找距我当前位置 100 米范围内的已保存位置【英文标题】:Finding saved locations that are within 100 meters of my current location 【发布时间】:2015-03-27 20:20:31 【问题描述】:

对于我的 iPhone 应用,我在变量 userLocation 中获得了用户的位置,并且我正在使用 CLLocationManager didUpdateLocations 方法不断更新它。

在我的解析数据库中,我存储了数千个位置。

我的问题是什么是最有效的方法来持续比较/判断这些解析数据库位置是否在用户当前位置的 100 米范围内? p>

我目前的方法是每次用户位置发生变化时遍历数据库位置数组;计算与当前位置的距离并判断距离是否小于 100 米,但是随着位置不断变化,这将对处理器和电池造成沉重负担。有什么建议吗?

【问题讨论】:

我不知道这是否是最有效的,但我是这样做的:***.com/questions/29267438/… 也许您应该将用户的位置从设备发送到 Parse,并告诉它针对数据运行查询(请参阅***.com/a/24879278/467105),而不是将所有其他位置数据带到设备。跟踪上次查询完成的时间,只有当用户的位置变化 X 米或上一次查询超过 N 分钟时才再次调用它。 【参考方案1】:

你可以结合 Anna 的想法(见评论),根据用户的移动速度不断改变 X 或 N 值。

如果用户正在走路,那么您只需执行下一个查询更长的时间。但如果用户使用自行车,例如,下一个查询应该更快。

【讨论】:

【参考方案2】:

我会发表评论,但没有代表。无论如何,您可以将位置分解为树型结构,以在每次迭代中删除一半的位置 - 根据您的位置,您可以使用军械网格正方形或如果没有,一些小一点的东西。这样,您只搜索相当接近的位置子集..?例如Quad Trees

【讨论】:

以上是关于查找距我当前位置 100 米范围内的已保存位置的主要内容,如果未能解决你的问题,请参考以下文章

当经纬度为已知点时计算100米距离

如何在经纬度半径范围内的 xml 文件中查找位置

MySQL选择地理位置范围内的行

显示用户在PHP中当前位置的10公里半径范围内的用户

如何从 SQLite 数据库中的用户位置检索特定范围内的一组位置

iOS - 获取当前邮政编码 X 英里内的位置?