7

私は Sinatra で小さなアプリを作成しています。ユーザーの都市を郵便番号 (ユーザーが入力する)、ユーザーと他のユーザーの間の距離 (郵便番号による)、および場合によっては熱から判断したいと考えています。ジッパーの地図。

どうすればいいですか?geoip gem を試してみましたが、思いどおりに動作しないようです。Google マップのような外部サービスを使用しますか (もちろん、ヒート マップにはこれが必要です)。

助けてくれてありがとう。

4

1 に答える 1

9

GeoKit gemは、あなたがやりたいことにぴったりのように思えます。

さまざまなジオコーディング サービス (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"
于 2009-12-09T22:47:33.670 に答える