寻找纬度和经度字段的地理编码器,但它们不存在

Geocoder looking for latitude and longitude fields but they don't exist

我正在使用 Rails Geocoder Gem、Rails 4.2 和 MySqL。我想检测有多少旅行与某些盒子兼容。

旅行和盒子有这些字段:departure_addressdeparture_latdeparture_longarrival_addressarrival_latarrival_long

当我想检查旅行是否与盒子兼容时,我尝试使用以下查询:

Travel.near([Box.last.departure_lat, Box.last.departure_long], 50)

我知道它只考虑 departure_address 而不是 arrival_address 但无论如何它不起作用,因为 Geocoder 试图在 table 'travels' 即使我称它为 'dep_lat' 等等经度。

我想解决这个问题,然后想把它和arrivals结合起来。谢谢!

您需要向 GeoCoder 指定您不想使用它们的默认 latlon 属性名称。

为此,请将以下行添加到您的模型中:

geocoded_by :departure_address, :latitude  => :departure_lat, :longitude => :departure_lon # ActiveRecord

你也会为你的到来做同样的事情,但当然要改变名字。

来自文档:

You are not stuck with using the latitude and longitude database column names (with ActiveRecord). For example:

geocoded_by :address, :latitude => :lat, :longitude => :lon # ActiveRecord

有关此内容的更多信息,请参阅 GeoCoder 文档的 Model Configuration 部分。