我没有运气就搜索了这个问题的解决方案,所以我现在在这里发帖...
我在我的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
答案 0 :(得分:2)
Geocoder.search返回一系列位置数据。
在提供的示例中,您可以使用以下方法检索纬度和经度:
self.home_latitude = home_coordinates[0].geometry["location"]["lat"]
self.home_longitude = home_coordinates[0].geometry["location"]["lng"]