0

2 つの IPv4 アドレスを緯度と経度に変換し、それらの間の地理的な距離を計算したいと考えています。

Geokit は、これができると言います。

シアトル:

a = Geokit::Geocoders::GoogleGeocoder.geocode("207.244.147.34")

a.lat => 37.0483944、a.lng => 37.3421261 (47.5839、-122.2995 である必要があります)

編集:以下は SF ではなく英国の IP アドレスですが、トルコではなく英国の IP アドレスです。

サンフランシスコ:

b = Geokit::Geocoders::GoogleGeocoder.geocode("5.68.123.155")

a.lat => 14.6478672、a.lng => 120.9880659 (37.7691、-122.4449 である必要があります)

a.distance_to(b)5273.737623217472 を返します。

どうやらシアトルからサンフランシスコまでは 5,000 マイルを少し超えており、航空運賃もかなりお得です。

私は何が欠けていますか?

4

1 に答える 1

0

aandはandbに対応していません:SeattleSan Franscisco

> a.city
 => "Gaziantep" 
> a.country
 => "Turkey" 
> b.city
 => "Caloocan" 
> b.country
 => "Philippines"

試す:

> Geocoder.configure(ip_lookup: :freegeoip)
> a = Geocoder.search("74.200.247.59").first
 =>  #<Geocoder::Result::Freegeoip:0x007fc6df3cf930 @data={"ip"=>"207.244.147.34", "country_code"=>"US", "country_name"=>"United States", "region_code"=>"WA", "region_name"=>"Washington", "city"=>"Seattle", "zip_code"=>"98103", "time_zone"=>"America/Los_Angeles", "latitude"=>47.674, "longitude"=>-122.342, "metro_code"=>819}, @cache_hit=nil>
 > b = ...

使用例はhttps://github.com/alexreisner/geocoder/blob/091032059e6b47285e2be5ef82ad8b016f362069/test/unit/lookups/freegeoip_test.rbを参照してください。

于 2015-04-05T17:28:29.097 に答える