代码之家  ›  专栏  ›  技术社区  ›  Pentium10

当手机到达一组位置时做些什么?

  •  5
  • Pentium10  · 技术社区  · 15 年前

    我在数据库中有一个坐标列表,标识为POI。对于一个城市来说,可能有100条记录。

    我想得到通知时,手机在150米范围内的一个位置。位置坐标也有误差/半径,通常为10到100米。因为我觉得为一个触发器添加每个位置(可能是数百个)不是很好,所以我如何优化唤醒代码?

    另外,我是否可以从队列中删除以前的安装通知?

    3 回复  |  直到 15 年前
        1
  •  2
  •   mefiX    15 年前

    您可以将您的POI存储在某种智能哈希表中,使用坐标计算唯一的哈希。每次到达位置更新时,您都会在哈希表中进行查找,以查看当前位置附近是否存在POI。由于这是一个哈希查找,因此此查找只应采用O(1)。

    在计算散列和存储POI时,应考虑到所需的范围。

    只是个主意!

    亲切的问候, 梅格斯

        2
  •  0
  •   zed_0xff    15 年前

    有一个名为locale的应用程序,可以根据您的GPS位置或可用的WiFi网络或蜂窝站ID等切换各种事件。

    它还有一个插件接口。你可以检查一下这个应用程序,也许还可以为它写一个插件。

        3
  •  0
  •   erezny    15 年前

    这个问题使我想起了电子游戏中的图形。不需要加载超出移动范围的点。我将把地图分解成一个网格,为8个相邻的网格块设置触发器,然后为当前网格块中的每个POI设置触发器。当到达新的网格块时,将更新触发器。考虑到误差范围,重叠网格块可能是明智的。