gpt4 book ai didi

ruby-on-rails - Ruby Geocoder 能否在 reverse_geocode 调用中仅返回街道名称?

转载 作者:行者123 更新时间:2023-12-04 03:36:46 26 4
gpt4 key购买 nike

geocoder如果行 after_validation :reverse_geocode,gem 将在保存时自动反转地理编码包含在模型中。但是,这会导致将一长串文本保存为地址 - 格式类似于“街道名称、城市名称、县名称、州名称、邮政编码、国家名称”。

我只对这个特定项目的街道名称感兴趣,所以我想知道是否有办法修改 after_validation调用以仅保存该信息。

如果我手动进行反向地理编码,我可以访问 road结果中的值:

  place = Place.first
result = Geocoder.search("#{place.latitude},#{place.longitude}")
street = result[0].data['address']['road']

我可以设置自己的自定义 after_validation就是这样做的,但如果 geocoder,我宁愿不重复功能已经提供了这个。

或者,如果有一种完全不同的方式可以将纬度/经度转换为街道名称,我将有兴趣了解它。如果此选项也包括地址编号或地址范围就可以了。

最佳答案

您可以通过提供一个接受要进行地理编码的对象和一个 Geocoder::Result 对象数组的块来自定义 reverse_geocode 方法。

reverse_geocoded_by :latitude, :longitude do |obj,results|
if geo = results.first
obj.street = geo.address
end
end

after_validation :reverse_geocode

每个 Geocoder::Result 对象 result 都提供以下数据:
result.latitude - float
result.longitude - float
result.coordinates - array of the above two
result.address - string
result.city - string
result.state - string
result.state_code - string
result.postal_code - string
result.country - string
result.country_code - string

更多信息可以在 geocode docs 中找到.您甚至可以从 Geocoder::Result 中找到更多的字段。目的。

关于ruby-on-rails - Ruby Geocoder 能否在 reverse_geocode 调用中仅返回街道名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15489402/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com