我正在使用这个漂亮的rails gem:https://github.com/alexreisner/geocoder
用户在他们的位置输入“旧金山”。这将存储在place对象属性中。 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”到该地址。如何修改此项以保存为美国加利福尼亚州旧金山
答案 0 :(得分:3)
我必须首先告诫我的回答,我没有使用这个宝石。在查看文档时,看起来你可以通过将一个块传递给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
我认为城市/州/国家/地区的可用性基于您已配置宝石使用的地理编码器。您可以查看https://github.com/alexreisner/geocoder/tree/master/lib/geocoder/results以查看为每个地理编码器填充的内容。