ruby-on-rails - 对多个地址进行地理编码

标签 ruby-on-rails ruby geocode

我已经到处寻找解决这个问题的方法,但没有成功,所以我现在在这里发帖......

我在我的 RoR 应用程序上使用 Geocode gem。

这是在文档中对同一模型上的多个地址进行地理编码的方法,它不起作用,因为它只对最后一种方法进行地理编码:

geocoded_by :start_address, latitude: :start_latitude, longitude: :start_longitude
geocoded_by :end_address, latitude: :end_latitude, longitude: :end_longitude

我试图编写一个自定义方法来解决这个问题:

geocoded_by :geocode_user_addresses
after_validation :geocode

def geocode_user_addresses
home_address_joined = [home_address, city].compact.join(', ')
work_address_joined = [work_address, city].compact.join(', ')
home_coordinates = Geocoder.search(home_address_joined)
work_coordinates = Geocoder.search(work_address_joined)
self.home_latitude = home_coordinates.latitude
self.home_longitude = home_coordinates.longitude
self.work_latitude = work_coordinates.latitude
self.work_longitude = work_coordinates.longitude
end

当我尝试对地址进行地理编码时出现此错误:

undefined method `latitude'

关于从哪里开始的任何想法?有一个类似的问题,但最终没有共享解决方案:Rails geocoder gem issues

最佳答案

Geocoder.search 返回一组位置数据。

在提供的示例中,您可以使用以下方法检索纬度和经度:

self.home_latitude = home_coordinates[0].geometry["location"]["lat"] self.home_longitude = home_coordinates[0].geometry["location"]["lng"]

关于ruby-on-rails - 对多个地址进行地理编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27810820/

相关文章:

ruby-on-rails - 使用 HTML5 地理定位获取用户位置并保存到数据库的 Rails 应用程序

android - Xamarin android 根据经纬度获取地址

ruby-on-rails - 保存时 Rails grouped_collection_select 不起作用

ruby-on-rails - 如何在csv中查找特定行

ruby-on-rails - 使用 Capistrano 和 ActiveStorage 部署后未显示图像

ruby - 如何使用 Ruby OpenSSL 验证 X.509 证书?

ruby-on-rails - 按 bool 值分组但在 ruby​​ on rails 中更改键

ruby-on-rails - 不确定如何实现 GEM 'Thumbs_up' [rails 4]

javascript - 从 json 获取某些数据(google geocode api)

java - 如何使用 GeoTools 和拓扑集成地理编码和引用线文件进行地理编码