移动应用程序如何在附近找到用户

时间:2014-09-10 00:55:58

标签: android

我正在开发一个可以找到附近用户的Android应用程序。 我需要帮助设计该应用程序。

我在想: 1.当我启动我的应用程序时,我使用API​​来查找我的位置。 2.我将该位置发送到我的服务器。 3.服务器返回附近其他用户的列表。

我的问题是服务器如何跟踪附近的用户列表?

我是否会在手机上创建后台服务,定期报告用户位置? 并且服务器维护所有用户的列表'位置?

这种方法可行吗?

1 个答案:

答案 0 :(得分:1)

你走在正确的轨道上。如果您能够对当前位置纬度/经度坐标进行地理编码或检索,则可能有一个库可以帮助您。

我的第一个想法是用于ruby的Geocoderhttps://github.com/alexreisner/geocoder)库,它提供了一个灵活的API,可以让您轻松找到附近的其他对象:

if obj.geocoded?
  obj.nearbys(30)                      # other objects within 30 miles
  obj.distance_from([40.714,-100.234]) # distance from arbitrary point to object
  obj.bearing_to("Paris, France")      # direction from object to arbitrary point
end

还有其他一些选项也很容易,如果你将PostgreSQL与PostGIS一起使用,你有一些实用功能,我相信你可以用来查询“附近”的用户。 (找到一个例子,“在另一个对象的半径范围内找到所有对象的最佳方法是什么?”http://postgis.net/docs/manual-1.3/ch03.html#id434832

因此整个工作流程将是:

  1. 从设备API请求lat / lon
  2. 将lat / lon发送到服务器/网络服务
  3. 使用库/数据库查找指定半径范围内的其他用户
  4. 将用户列表发送回设备
  5. 我怀疑最困难的方面可能是保持其他用户的纬度/经度最新,但这是一个不同的问题需要解决。

    修改 只是为了澄清一下,您肯定希望将所有登录用户的lat / lon存储在服务器上的某种数据库中。这是一种非常可行的方法,但您必须使其保持最新,并能够以某种方式确定数据是否过时(如果这对您的应用程序很重要)。您是否使用后台服务来保持信息的最新状态取决于您和您尝试解决的问题的限制。