我有一个标识为POI的数据库中的坐标列表。对于一个城市可能会有> 100条记录。
我希望在手机进入其中一个位置的150米范围时收到通知。位置坐标也有误差/半径,通常为10到100米。由于我没有找到为触发器添加每个位置(可能是数百个)的好处,我该如何优化唤醒代码?
我是否还可以选择从队列中删除以前设置的通知?
答案 0 :(得分:2)
您可以使用坐标计算唯一哈希,将POI存储在某种智能哈希表中。每次位置更新到达时,您都会在哈希表中查找当前位置附近是否有POI。此查找应该只采用O(1),因为它是一个哈希查找。
计算散列并存储POI时,应考虑所需的范围。
只是一个想法!
亲切的问候, mefiX
答案 1 :(得分:0)
有一个名为Locale的应用程序,可以根据您的GPS位置或可用的Wifi网络或手机站ID等切换各种事件
它还有一个插件接口。检查该应用程序并为其编写插件可能很有用。
答案 2 :(得分:0)
这个问题让我想起了电子游戏中的图形。无需加载远离您的移动范围的点。我将地图分解为一个网格,为8个adjecent网格块设置触发器,然后为当前网格块中的每个POI设置触发器。到达新的网格块时,将更新触发器。考虑到误差范围,重叠网格块可能很聪明。