ruby-on-rails - 地理编码器位置查找

标签 ruby-on-rails

我正在使用这个漂亮的 Rails gem:https://github.com/alexreisner/geocoder

用户在其位置中输入“旧金山”。这被存储在地点对象属性中。然后,地理编码器获取坐标,然后使用坐标获取完整地址。

型号:

geocoded_by :place
after_validation :fetch_coordinates
after_validation :set_label

reverse_geocoded_by :latitude, :longitude
after_validation :fetch_address

这一切都运行良好。但我想定制最终的格式。如果有人输入“旧金山”,地理编码器会在该地址中输入:“1601-1645 Market St, San Francisco, CA 94103, USA”。我如何修改它以另存为 San Francisco, CA, USA

最佳答案

我必须首先声明我的答案,因为我没有使用这个 gem 。在查看文档时,看起来您可以通过将 block 传递给reverse_geocoded_by来获得您想要的东西:

reverse_geocoded_by :lat, :lon do |obj,geo|
  obj.city    = geo.city
  obj.zipcode = geo.postal_code
  obj.country = geo.country_code
end
after_validation :reverse_geocode

高级地理编码部分提供了更多信息。

通过你的代码片段,我猜你想要类似的东西:

reverse_geocoded_by :latitude, :longitude do |obj,geo|
  obj.address  = [geo.city, geo.state, geo.country_code].join(",")
end
after_validation :reverse_geocode

我确实认为城市/州/国家/地区的可用性取决于您配置 gem 使用的地理编码器。您可以查看https://github.com/alexreisner/geocoder/tree/master/lib/geocoder/results查看每个地理编码器填充的内容。

关于ruby-on-rails - 地理编码器位置查找,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5414389/

相关文章:

javascript - 工作 jQuery 代码在条件内不起作用

ruby-on-rails - 使用 haml 显示错误消息

ruby-on-rails - 如何解决 Rails 模型属性和 gem 名称冲突?

javascript - 向 Rails Controller 发送 AJAX 请求,然后向外部服务发送 HTTParty,后者将 JSON 返回到 .html.erb 文件中的输出

ruby-on-rails - collection_select onchange 事件和选定的 ruby​​ on Rails

ruby-on-rails - 在 Rails 的 LESS 文件中使用数据库值

ruby-on-rails - 如何从其他 Controller 调用 ApplicationController 中的方法?

ruby-on-rails - 在 ruby​​ 脚本中调用命令

ruby-on-rails - rails : cannot load such file -- byebug/byebug (LoadError)

ruby-on-rails - 有没有办法为 CarrierWave/Fog 设置上传进度指示器?