1

私は新しいプロジェクトに取り組んでおり、ユーザーの場所をデータベースに保存する方法について、一日中考えて探しています。

私は彼らの都市、国を救う必要があります。ここに少し問題があります。たとえば、ヨーロッパ人の場合、これはcity = Berlincountry=Germanyを意味するためです。ただし、米国のユーザーの場合は、city = Los Angelescountry = Californiastate = USA)のようになります。

ですから、これが私が今日直面している問題です。

このアプリでの私の目標は、場所に応じて市内のすべてのユーザーを見つけることです。また、たとえば15km/マイルの範囲にいる人々を見つけます。

アプリをRoR、PostgreSQLに実装する予定です。アプリは、おそらくHerokuで実行されます。

この「問題」を解決するための最良の方法は何ですか?アドバイスやコツなど教えていただけませんか?

ありがとうございました

4

1 に答える 1

2

これを実現するには、 geokitおよびgeokit- railsgemを使用できます。ドキュメントについては、こちらを参照してください:https ://github.com/imajes/geokit-rails

基本的には、次のように機能します。ユーザーの住所データを保存すると、ジオコーディングサービス(GoogleマップやYahoo 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

次に、次のことを実行できます。

# 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')

その他にも、ドキュメントをご覧ください...

この例は、geokitgemの使用方法を示しています。この宝石はもはや活発に開発されていないようです。したがって、ジオコーダーをチェックする価値があるかもしれません:https : //github.com/alexreisner/geocoder

于 2012-08-16T15:32:12.473 に答える