我想将两个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地址,但仍然是英国而不是土耳其。
旧金山:
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。
显然西雅图到圣弗朗西斯科有点超过5000英里,而且我的机票很多。
我错过了什么?
答案 0 :(得分:0)
a
和b
与Seattle
和San 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 = ...