访问地理编码器宝石范围

时间:2015-12-31 16:20:45

标签: rails-geocoder

The gem manual表示Venue.near([40.71, -100.23], 20, :units => :km)

然而,除了个别的经度和纬度之外,该应用程序的模型对象还具有两个地理编码的坐标变量。为了测试各种搜索选项(postGIS,lon和lat的数字索引,或调用地理编码器服务),有没有办法在查找给定位置附近的对象时访问特定的模型变量?

相关的架构数据是:

t.decimal  "origin_lon",          precision: 15, scale: 10
t.decimal  "origin_lat",          precision: 15, scale: 10
t.spatial  "origin_lonlat",      limit: {:srid=>3857, :type=>"point"}
add_index "strappos", ["origin_lat"], :name => "index_strappos_on_origin_lat"
add_index "strappos", ["origin_lon"], :name => "index_strappos_on_origin_lon"
add_index "strappos", ["origin_lonlat"], :name => "index_strappos_on_origin_lonlat", :spatial => true

1 个答案:

答案 0 :(得分:1)

GeoCoder默认使用latitudelongitude作为变量名称。由于您的不同,因此您需要添加额外的选项才能查询origin_lonorigin_lat

在模型中,为模型初始化geocoder,您可以选择为lat / lon属性指定其他名称:

# YourModel.rb
geocoded_by :address,
  latitude: :origin_lat, 
  longitude: :origin_lon
为了清楚起见,我将它放在多行上。如您所见,我告诉geocoder我的lat / lon属性名称与默认值不同。

现在,使用near查询模型将查看这些新属性名称,而不是默认值。