2009-12-09 3 views
7

Sinatra에서 작은 앱을 만들고 있는데, 사용자의 도시를 (입력하는) 우편 번호, 다른 사용자와의 거리 (우편 번호 별), 그리고 가능하면 지퍼의 히트 맵.지오 위치 루비/시나트라에 있습니까?

어떻게하면됩니까? 나는 geoip 보석을 시도했지만, 내가 원하는 것을하지 않는 것 같습니다. Google Maps와 같은 외부 서비스를 사용할 것인가? (히트 맵의 경우이 기능이 필요합니까?)

도움 주셔서 감사합니다.

답변

9

GeoKit 보석은 당신이하고 싶은 것을 적합하게 들립니다.

다양한 지오 코딩 서비스 (Yahoo, Google 등)에 대한 인터페이스를 추상화하고 거리 계산을위한 코드를 제공합니다.

지오 코드를 사용하여 위치를 가져오고 위치에 대한 주소 정보에 액세스하고 위치 간의 거리를 계산할 수 있습니다.

여기에 빠른 시작입니다, 당신에게 어떻게 라이브러리 작품의 아이디어를 제공하기 위해, 링크 된 페이지에서 복사 뻔뻔한 :

irb> require 'rubygems' 
irb> require 'geokit' 
irb> a=Geokit::Geocoders::YahooGeocoder.geocode '140 Market St, San Francisco, CA' 
irb> a.ll 
=> 37.79363,-122.396116 
irb> b=Geokit::Geocoders::YahooGeocoder.geocode '789 Geary St, San Francisco, CA' 
irb> b.ll 
=> 37.786217,-122.41619 
irb> a.distance_to(b) 
=> 1.21120007413626 
irb> a.heading_to(b) 
=> 244.959832435678 
irb(main):006:0> c=a.midpoint_to(b)  # what's halfway from a to b? 
irb> c.ll 
=> "37.7899239257175,-122.406153503469" 
irb(main):008:0> d=c.endpoint(90,10)  # what's 10 miles to the east of c? 
irb> d.ll 
=> "37.7897825005142,-122.223214776155" 
+0

완벽한을, 감사합니다! – user227837