【问题标题】:Geocoding multiple addresses地理编码多个地址
【发布时间】:2015-01-07 03:02:46
【问题描述】:

我一直在寻找解决这个问题的方法,但没有运气,所以我现在在这里发帖......

我在我的 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

【问题讨论】:

标签: ruby-on-rails ruby geocode


【解决方案1】:

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

在提供的示例中,您可以通过以下方式检索纬度和经度:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 2016-11-07
    • 1970-01-01
    • 2012-04-29
    相关资源
    最近更新 更多