Sql 如何存储用户';地点?

Sql 如何存储用户';地点?,sql,ruby-on-rails,ruby,geolocation,location,Sql,Ruby On Rails,Ruby,Geolocation,Location,我正在做一个新项目,整天都在思考&寻找最好的方法,如何将用户的位置保存到数据库中 我需要拯救他们的城市和国家。这里有一个小问题,因为对欧洲人来说,这意味着城市=柏林,国家=德国。 但对于美国用户来说,这就像是城市=洛杉矶,国家=加利福尼亚(州=美国) 这就是我今天面临的问题 我在这个应用程序中的目标是根据他们的位置查找城市中的所有用户。还要找到他们所在地区的人,比如说15公里/英里 我计划在RoR、PostgreSQL中实现该应用程序,该应用程序可能会在Heroku上运行 解决这个“问题”的最好

我正在做一个新项目,整天都在思考&寻找最好的方法,如何将用户的位置保存到数据库中

我需要拯救他们的城市和国家。这里有一个小问题,因为对欧洲人来说,这意味着城市=柏林国家=德国。 但对于美国用户来说,这就像是城市=洛杉矶国家=加利福尼亚州=美国

这就是我今天面临的问题

我在这个应用程序中的目标是根据他们的位置查找城市中的所有用户。还要找到他们所在地区的人,比如说15公里/英里

我计划在RoR、PostgreSQL中实现该应用程序,该应用程序可能会在Heroku上运行

解决这个“问题”的最好办法是什么?你能给我一些建议、提示吗

谢谢

您可以使用geokit和geokit rails gems来实现这一点。有关文档,请参见此处:

基本上,它是这样工作的:您保存用户的地址数据,然后使用地理编码服务(如谷歌地图或雅虎Placefinder)查找该地址并将其映射到空间点(lat/lng)。然后可以使用这些点来计算距离等

例如:

class User < ActiveRecord::Base
  # has the following db fields:
  # - city
  # - state
  # - country
  # - latitude
  # - longitude

  acts_as_mappable :default_units       => :miles, 
                   :default_formula     => :sphere, 
                   :lat_column_name     => :latitude,
                   :lng_column_name     => :longitude,
                   :auto_geocode        => {:field => :full_address}

  def full_address
    [city, state, country].reject(&:blank).join(', ')
  end
end
还有更多,请参阅文档


此示例演示如何使用geokit gem。这颗宝石似乎不再处于积极开发之中。因此,也许有必要查看geocoder:

好吧,html5地理定位+ajax或geocoder+ip查找您应该存储lat/lng+城市详细信息。您能给我举个例子吗?
# find all users in a city (this has nothing to do with geokit but is just a normal db lookup)
User.where(:city => 'New York')

# find all users that are within X miles of a place
User.find_within(300, 'Denver')