我正在阅读'gmaps4rails'
,但我对宝石有疑问。是否可以仅使用地址获取位置(lat,lng)?
答案 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。您需要知道几乎所有要添加到您的应用程序的内容。
希望这可以让你开始朝着正确的方向前进。