2009-12-09 11 views
7

Tworzę małą aplikację w Sinatrze i chciałbym określić miasta moich użytkowników na podstawie ich kodu pocztowego (który wprowadzą), odległości między nimi a innymi użytkownikami (według kodu pocztowego) i ewentualnie mapa termiczna suwaków.Lokalizacja geograficzna w Ruby/Sinatra?

Jak to zrobić? Próbowałem klejnotu geoip, ale wydaje się, że nie robi tego, co chcę. Czy skorzystałbym z usługi zewnętrznej, takiej jak Mapy Google (oczywiście potrzebowałbym tej mapy termicznej)?

Dzięki za pomoc.

Odpowiedz

9

Klejnot brzmi jak dobre dopasowanie do tego, co chcesz zrobić.

Usuwa interfejsy do różnych usług geokodowania (Yahoo, Google itp.) I udostępnia kod do obliczania odległości.

Można geokodować suwaki, aby uzyskać lokalizacje, uzyskać dostęp do informacji o adresie na temat lokalizacji i obliczyć odległości między lokalizacjami.

Oto szybki start, bezwstydny skopiowane z połączonego stronie, po prostu daje wyobrażenie o tym, jak prace Biblioteka:

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

doskonały, dzięki! – user227837

Powiązane problemy