我想在一个模型中对两个地址进行地理编码,即。旅程有一个StartAddress和EndAddress。 从而, 我的模型有三个属性: StartAddress start_longtitude start_lattitude EndAddress end_longtitude end_lattitude
我如何对其进行地理编码,以便我可以调用nearbys功能来查找i)在特定旅程附近开始的旅程和ii)在特定旅程附近结束的旅程? 任何帮助将不胜感激
答案 0 :(得分:0)
最近有一个更新允许这样做。 https://github.com/alexreisner/geocoder/pull/692
使用您自己的地理编码功能对模型进行地理编码,然后在near函数中指定要搜索的备用属性。
答案 1 :(得分:0)
问题和解决方案很好地表达了here。
将以下before_save
和相应的方法添加到模型中以解决问题。不要忘记为第二个位置(可能是目的地)重复部分代码:
before_save :geocode_endpoints
private
#To enable Geocoder to works with multiple locations
def geocode_endpoints
if from_changed?
geocoded = Geocoder.search(loc1).first
if geocoded
self.latitude = geocoded.latitude
self.longitude = geocoded.longitude
end
end
# Repeat for destination
if to_changed?
geocoded = Geocoder.search(loc2).first
if geocoded
self.latitude2 = geocoded.latitude
self.longitude2 = geocoded.longitude
end
end
end