我正在开发一个可以找到附近用户的Android应用程序。 我需要帮助设计该应用程序。
我在想: 1.当我启动我的应用程序时,我使用API来查找我的位置。 2.我将该位置发送到我的服务器。 3.服务器返回附近其他用户的列表。
我的问题是服务器如何跟踪附近的用户列表?
我是否会在手机上创建后台服务,定期报告用户位置? 并且服务器维护所有用户的列表'位置?
这种方法可行吗?
答案 0 :(得分:1)
你走在正确的轨道上。如果您能够对当前位置纬度/经度坐标进行地理编码或检索,则可能有一个库可以帮助您。
我的第一个想法是用于ruby的Geocoder
(https://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)
因此整个工作流程将是:
我怀疑最困难的方面可能是保持其他用户的纬度/经度最新,但这是一个不同的问题需要解决。
修改强> 只是为了澄清一下,您肯定希望将所有登录用户的lat / lon存储在服务器上的某种数据库中。这是一种非常可行的方法,但您必须使其保持最新,并能够以某种方式确定数据是否过时(如果这对您的应用程序很重要)。您是否使用后台服务来保持信息的最新状态取决于您和您尝试解决的问题的限制。