地理编码器位置查找

时间:2011-03-24 03:22:28

标签: ruby-on-rails

我正在使用这个漂亮的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”到该地址。如何修改此项以保存为美国加利福尼亚州旧金山

1 个答案:

答案 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以查看为每个地理编码器填充的内容。