在一个模型中对两个地址进行地理编码

时间:2014-10-23 00:41:38

标签: ruby-on-rails ruby ruby-on-rails-4 geocoding rails-geocoder

我想在一个模型中对两个地址进行地理编码,即。旅程有一个StartAddress和EndAddress。 从而, 我的模型有三个属性: StartAddress start_longtitude start_lattitude EndAddress end_longtitude end_lattitude

我如何对其进行地理编码,以便我可以调用nearbys功能来查找i)在特定旅程附近开始的旅程和ii)在特定旅程附近结束的旅程? 任何帮助将不胜感激

2 个答案:

答案 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