0

当我的应用程序被触发时,它会通过 GPS 获取用户的当前位置(此功能已实现)。

我的问题是:例如,我想知道是否有用户在给定半径(例如 1 公里)内使用我的应用程序。可能吗?

4

1 回答 1

0

是的,但您也需要一台服务器。概括地说,过程如下:

  • 该应用程序从 Android 获取位置。
  • 应用程序查询服务器,在其请求中发送当前位置。
  • 服务器将位置和用户名存储在空间数据库中;也就是说,可以按位置索引的用户数据库。如果有,它将覆盖先前的位置。服务器还应存储设置位置的时间。
  • 服务器还查找空间数据库中的位置,以查找给定半径内的所有用户,或最近的n 个用户。它将用户列表发送回应用程序。它可能使用 JSON、XML 或其他格式来发送这些数据。(由于您同时控制服务器和应用程序,因此您可以选择您喜欢的任何格式。)
  • 如果设备的位置发生变化,应用程序会再次向服务器报告其位置,并获取新的用户列表。
  • 如果您的应用程序需要,您还可以使用Google Cloud Messaging或持久连接,让服务器在附近出现新用户时通知应用程序。
  • 当用户下线时,应用程序会向服务器发送另一条消息告诉它。这将删除用户在数据库中的位置,因此该用户在离开该区域后不会出现。
  • 如果在一定时间内没有更新位置,服务器还应该从数据库中删除位置,以防应用程序崩溃或突然断开连接。

例如,对于服务器,您可以在PostGIS之上实现一些东西。PostGIS 是 PostgreSQL 的一个插件,允许它回答空间查询。

这是一个非常具体的需求,所以我认为没有任何现有的代码可以下载来为您执行此操作。一旦你尝试过,如果你遇到困难,请提出一个新问题。

于 2013-05-21T17:15:35.683 回答