我正在使用这个漂亮的 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/