dan*_*mcc 1 maps location geocoding ruby-on-rails-3
我试图获得两个不同值的纬度和经度值.这些是在属性start和end我的里程模型中设置的.
geocoded_by :end, :latitude => :latitude, :longitude => :longitude
geocoded_by :start, :latitude => :start_lat, :longitude => :start_lon
Run Code Online (Sandbox Code Playgroud)
我的里程模型中有以下属性:
start
start_lat
start_long
end
latitude
longitude
Run Code Online (Sandbox Code Playgroud)
根据geocoded_by前程万里(Mileage)模型顶部的哪一行,只对其中一个属性进行地理编码.有没有办法让地理编码器宝石处理这两个属性?
最简洁的答案是不.
但是不难推出自己的解决方案.基本上geocoded_by:设置一种简单的方法,使用一些选项(lat/long列名等)从回调中对地址lat/long进行地理编码.
有一种实用工具方法可以查找地址的lat/lng:
Geocoder.coordinates(the_start_address)
=> [42.700149, -74.922767]
Run Code Online (Sandbox Code Playgroud)
所以你可以使用geocoded_by:方法来处理你的例子中的结束lat/long然后做类似的事情
before_save :geocode_the_start_address
def geocode_the_start_address
coords = Geocoder.coordinates(self.start)
self.start_lat = coords[0]
self.start_long = coords[1]
end
Run Code Online (Sandbox Code Playgroud)
老实说,我自己更加一致地命名--start_address,end_address,start_lat,start_long等.我还会使用自定义方法对起始地址和结束地址进行地理编码,而不是geocoded_by,因此代码更加一致.