2012-08-16 4 views
1

나는 새 프로젝트를 만들고 있으며, 하루 종일 생각하고있다. &은 사용자의 위치를 ​​데이터베이스에 저장하는 가장 좋은 방법을 찾고있다.사용자의 위치를 ​​저장하는 방법은 무엇입니까?

도시, 국가를 저장해야합니다. 예를 들어 유럽인의 경우 이는 도시 = 베를린, 국가 = 독일을 의미하므로 여기에 약간의 문제가 있습니다. 미국 사용자의 경우 도시 = 로스 앤젤레스, 국가 = 캘리포니아 (주 = 미국)입니다.

그래서 저는 이것이 오늘 전체를 마주하게되는 문제입니다.

이 앱의 목표는 도시의 모든 사용자를 위치별로 찾는 것입니다. 또한 15km/mile라고 말하는 지역에있는 사람들을 찾습니다.

RoR, PostgreSQL에서 앱을 구현할 계획인데, 앱이 아마 Heroku에서 실행될 것입니다.

이 "문제"를 해결하는 가장 좋은 방법은 무엇입니까? 조언이나 조언을 좀 해줄 수 있니?

+0

음, HTML5의 위치 정보 + 아약스 또는 지오 코더 + IP 조회 – apneadiving

+0

당신은/LNG + 도시 세부 – apneadiving

+0

당신이 수행하는 방법의 예를 제발 줄 수있는 위도 저장해야합니다 그? – user984621

답변

2

당신은 그것을 달성하기 위해 보석 geokit에게geokit 레일을 사용할 수 있습니다 감사합니다. https://github.com/imajes/geokit-rails

기본적으로 다음과 같이 작동합니다. 사용자의 주소 데이터를 저장하고 지오 코딩 서비스 (예 : Google지도)를 사용하여 해당 주소를 검색하여 공간 (위도/경도)의 한 지점에 매핑합니다. 야후 플레이스 파인더).

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

훨씬 더, 단지 문서를 참조하십시오 ...

이 예에서는 geokit 보석을 사용하는 방법을 보여줍니다. 이 보석은 더 이상 활발한 개발을하지 않는 것 같습니다. 그래서 어쩌면 지오 코더 체크 아웃 worthwile 것 : https://github.com/alexreisner/geocoder

관련 문제