我正在使用Geocoder gem找到附近位置并在谷歌地图中找到它。
发布模式
class Posting
include Mongoid::Document
include Geocoder::Model::Mongoid
field :id
field :title
field :coordinates, :type => Array
field :address
after_validation :reverse_geocode_address
index({ location: "2dsphere" }, { min: -200, max: 200 })
belongs_to :user
def reverse_geocode_address
self.coordinates = Geocoder.coordinates(self.address)
end
end
当我查询
时Posting.near("chennai",20)
ArgumentError: wrong number of arguments (2 for 0..1)
.../ruby-2.0.0-preview2/gems/origin-2.1.1/lib/origin/selectable.rb:334:in `near'
我能理解,它的调用"附近"功能在" selectable.rb" (mongoid' s)而不是Geocoder的范围。
我在这里做错了什么?如何使用地理编码器获得结果。
我正在使用以下版本
MongoDB:db version v2.6.3
MongoID:mongoid(4.0.0)
GEOCoder:geocoder(1.2.6)
答案 0 :(得分:1)
遇到与你相同的问题。
将这颗宝石直接用于制作mongoid。
class Localizable
include Mongoid::Document
field :coordinates, type: Array, default: nil
index({ coordinates: "2d" }, { min: -180, max: 180 })
validates_presence_of :coordinates
## returns localizables matching params
#
# @param la [Float] latitude
# @param lo [Float] longitude
# @param ra [Float] range in km
# @return [Mongoid]
def self.at_range(la, lo, ra)
geo_near([la, lo]).max_distance(ra.fdiv(111.12))
end
def latitude
coordinates[0]
end
def longitude
coordinates[1]
end
end
Localizable.at_range(48, 2, 10)
=> []