gmaps4rails在服务器中获取经度和纬度

时间:2014-07-05 20:03:19

标签: ruby-on-rails ruby gmaps4rails

我正在阅读'gmaps4rails',但我对宝石有疑问。是否可以仅使用地址获取位置(lat,lng)?

2 个答案:

答案 0 :(得分:2)

是的,这可以通过geocoder.search方法完成。 我这样做是为了获得用户位置/地址的纬度。

  :lat => Geocoder.search(tweet.user.location.to_s).first.coordinates,
  :lng => Geocoder.search(tweet.user.location.to_s).first.coordinates

这里有一个很棒的轨道广播http://railscasts.com/episodes/273-geocoder

答案 1 :(得分:2)

是的,但我会首先使用Geocoder宝石。

gem 'geocoder'

您需要创建迁移以将纬度和经度浮点数添加到表

rails g migration AddLatitudeAndLongitueToModel latitude:float longitude:float

显然,用您的表名替换Model。然后运行rake db:migrate

然后在您的模型中,确保地址的属性正在进行地理编码

geocoded_by :location # replace location with the attribute of the address

我还想补充一点:

after_validation :geocode, if: ->(model_name){ model_name.location.present? and model_name.location_changed? }

以避免不必要的API请求。再次使用您的模型更改model_name,使用具有该地址的属性更改location

当您现在创建新帖子时,它将具有您可以与Gmap4rails

一起使用的经度和纬度坐标

所以你现在可以Gmap4rails这样:

hash = Gmaps4rails.build_markers(@post) do |post, marker|
  marker.lat post.latitude
  marker.lng post.longitude
end

以下是Geocoder gem的GitHub docs。您需要知道几乎所有要添加到您的应用程序的内容。

希望这可以让你开始朝着正确的方向前进。