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
答案 0 :(得分:1)
GeoCoder默认使用latitude
和longitude
作为变量名称。由于您的不同,因此您需要添加额外的选项才能查询origin_lon
和origin_lat
。
在模型中,为模型初始化geocoder
,您可以选择为lat / lon属性指定其他名称:
# YourModel.rb
geocoded_by :address,
latitude: :origin_lat,
longitude: :origin_lon
为了清楚起见,我将它放在多行上。如您所见,我告诉geocoder
我的lat / lon属性名称与默认值不同。
现在,使用near
查询模型将查看这些新属性名称,而不是默认值。