【发布时间】:2014-01-31 03:19:46
【问题描述】:
我正在构建一个使用谷歌地图的安卓应用程序。它就像一个导航应用程序,可以在运动时更新屏幕上的位置。我在地图上放置了多个标记,每个标记的半径为 125。当当前位置与标记半径相交时,我会收到一条警告消息。这是通过遍历所有标记并检查当前位置是否与 OnLocationChangedMethod() 处的任何标记的半径相交来完成的。如果你有几个标记,它会很好用,但我有超过 30 个标记。到遍历所有标记并报告是否存在交叉点所需的时间时,当前位置将通过标记。所以它需要更长的时间,而且效率不高。
我希望有人可以帮助我们找到更好的方法来做到这一点。我已经阅读了几个建议采用地图边界并找到可见标记的解决方案。但这也会遍历所有标记,并且需要与我的解决方案相同的时间。
如果有人可以提供帮助,我将不胜感激。
谢谢,
阿卜杜拉
【问题讨论】:
-
为什么不将标记位置保存在数据库中,并通过您的服务每 45 秒与用户位置进行比较..
-
标记实际上存储在服务器数据库中。在应用程序的第一次初始化时,标记被下载并保存在本地 SQLite 数据库中。 45秒太长了。标记半径为 250 米。通过标记平均需要 25 秒。时代不是问题。根据存储在数据库中的标记数量,检查是否存在交叉点的过程实际上需要时间。我不知道是否有一种解决方案可以让标记像雷达一样而不是当前位置标记。
标签: android google-maps