我正在 Sinatra 中创建一个小型应用程序,我想根据他们的邮政编码(他们将输入)、他们与其他用户之间的距离(按邮政编码)以及可能的热量来确定我的用户所在的城市拉链地图。
我该怎么做?我已经尝试过 geoip gem,但它似乎并没有达到我想要的效果。我会使用像谷歌地图这样的外部服务吗(显然我需要这个来制作热图)?
谢谢你的帮助。
我正在 Sinatra 中创建一个小型应用程序,我想根据他们的邮政编码(他们将输入)、他们与其他用户之间的距离(按邮政编码)以及可能的热量来确定我的用户所在的城市拉链地图。
我该怎么做?我已经尝试过 geoip gem,但它似乎并没有达到我想要的效果。我会使用像谷歌地图这样的外部服务吗(显然我需要这个来制作热图)?
谢谢你的帮助。
GeoKit gem 听起来很适合您想做的事情。
它抽象出各种地理编码服务(雅虎、谷歌等)的接口,并提供用于距离计算的代码。
您可以对 zip 进行地理编码以获取位置,访问有关该位置的地址信息,并计算您的位置之间的距离。
这是从链接页面无耻复制的快速入门,只是为了让您了解图书馆的工作原理:
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"