Ruby/Sinatra的地理位置?

Ruby/Sinatra的地理位置?,ruby,geolocation,sinatra,Ruby,Geolocation,Sinatra,我正在Sinatra创建一个小应用程序,我想根据我的用户的邮政编码(他们将输入)、他们与其他用户之间的距离(按邮政编码)以及可能的拉链热图来确定他们的城市 我该怎么做?我试过geoip gem,但它似乎不符合我的要求。我会使用像谷歌地图这样的外部服务吗(很明显,我需要它来制作热图) 谢谢你的帮助。这颗宝石听起来很适合你想做的事情 它抽象出各种地理编码服务(Yahoo、Google等)的接口,并提供用于距离计算的代码 您可以对拉链进行地理编码以获取位置,访问有关位置的地址信息,并计算位置之间的距离

我正在Sinatra创建一个小应用程序,我想根据我的用户的邮政编码(他们将输入)、他们与其他用户之间的距离(按邮政编码)以及可能的拉链热图来确定他们的城市

我该怎么做?我试过geoip 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"