当当前位置接近标记时,在Android地图上发出警报。

3
我正在开发一款使用谷歌地图的安卓应用,类似于导航应用程序,在行驶过程中更新屏幕上的位置。我在地图上放置了多个标记,并为每个标记设置了125个半径。当当前位置与标记半径相交时,我会收到警告消息。这是通过在OnLocationChangedMethod()中循环所有标记并检查当前位置是否与任何标记的半径相交来完成的。如果您只有几个标记,这种方法效果很好,但是我有超过30个标记。在循环所有标记并报告是否有相交时,当前位置已经超过了标记,所以它需要更长的时间,而且不够高效。
我希望有人能提供更好的方法来解决这个问题。我已经阅读了一些解决方案,建议获取地图边界并找到可见标记。但这也需要遍历所有标记,需要和我的解决方案一样长的时间。
如果有人可以提供帮助,我将不胜感激。
谢谢,
Abdullah

为什么不将标记位置保存在数据库中,并通过您的服务每45秒与用户位置进行比较呢? - Ranjit
标记实际上存储在服务器数据库中。在应用程序的初始初始化过程中,标记会被下载并保存在本地SQLite数据库中。45秒太长了。标记半径为250米。平均需要25秒才能通过标记。时间不是问题。检查是否存在交集的过程实际上取决于数据库中存储的标记数量。我不知道是否有解决方案可以让标记像雷达一样工作,而不是当前位置标记。 - Abdullah Alhutami
你找到解决方案了吗?如果有的话,你能分享一下相关仓库吗?我正在进行大学项目,需要类似的功能!那将对我非常有帮助!先提前感谢了! - c.dipu0
2个回答

6
这听起来你更适合使用地理围栏,因为它基本上就是你想要做的事情。已经有内置的功能,不需要使用这些不同的服务和其他东西。

经过与我的代码和谷歌地图的大量集成,它运行得非常好。非常感谢。一个快速的问题。您添加的地理围栏点数是否有限制?? - Abdullah Alhutami

0
使用两个服务。一个用于获取当前位置,另一个用于计算距离。

抱歉,我没有足够的时间来完成我的回复。使用两个服务。一个服务广播位置,另一个服务计算到每个点的接近程度。这样,理论上,在这种情况下可以做到最好的事情是,接近程度计算不会延迟位置广播。 - Daniel Wong

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接