当手机到达一组位置时做些啥?
Posted
技术标签:
【中文标题】当手机到达一组位置时做些啥?【英文标题】:Do something when phone reaches a set of location?当手机到达一组位置时做些什么? 【发布时间】:2010-06-01 15:58:37 【问题描述】:我在数据库中有一个坐标列表,标识为 POI。一个城市可能有 >100 条记录。
我想在手机进入其中一个位置 150 米范围内时收到通知。位置坐标也有误差/半径,通常为 10 到 100 米。由于我觉得为触发器添加每个位置(可能是数百个)并不好,我该如何优化唤醒代码?
我还可以选择从队列中删除之前设置的通知吗?
【问题讨论】:
【参考方案1】:您可以将 POI 存储在某种智能哈希表中,使用坐标计算唯一哈希。每次位置更新到达时,您都会在哈希表中查找以查看当前位置附近是否有 POI。这个查找应该只需要 O(1),因为它是一个哈希查找。
在计算哈希和存储 POI 时应考虑所需的范围。
只是一个想法!
亲切的问候, 梅菲克斯
【讨论】:
据我所知,在 android 中,您设置通知触发器的方式是告诉系统to buzz me when phone reaches in coord x, y
您已经告诉了坐标。我可以为我所有的 pois 设置通知,但这可能不适用于数百条记录。侦听位置更新可能会消耗电池电量,因此需要运行应用程序。
Android SDK 有一个 addProximityAlert
方法可以用于这个确切的目的。【参考方案2】:
有一个名为 Locale 的应用程序,它可以根据您的 GPS 位置或可用的 Wifi 网络或基站 ID 等切换各种事件
它还有一个插件界面。检查该应用程序并为它编写插件可能对您很有用。
【讨论】:
我知道 Locale 的存在,我想做一些非常相似但目的不同的事情。我无法使用 Locale 的插件 sdk。【参考方案3】:这个问题让我想起了电子游戏中的图形。无需加载超出您的运动范围的点。我将地图分解成一个网格,为 8 个相邻的网格块设置触发器,然后为当前网格块中的每个 POI 设置触发器。当到达新的网格块时,触发器会更新。考虑到误差范围,重叠网格块可能会很聪明。
【讨论】:
以上是关于当手机到达一组位置时做些啥?的主要内容,如果未能解决你的问题,请参考以下文章