Rails Geocoder,找到Model2附近的所有Model1

Posted

技术标签:

【中文标题】Rails Geocoder,找到Model2附近的所有Model1【英文标题】:Rails Geocoder, Find all Model1 near Model2 【发布时间】:2016-12-16 08:19:21 【问题描述】:

我有 2 个经过地理编码的模型。模型之一是客户端。我根据其 IP 更新客户端模型的位置。这是它的外观

class Client < ApplicationRecord
  geocoded_by :ip_address
  after_validation :geocode, :if => :ip_address_changed?
end

这是我的客户端控制器

class ClientController < ApplicationController
    def index
        if client_signed_in?
            u = current_client
            u.ip_address = request.remote_ip
            u.save
        end
    end
end

现在如您所见,我更新了客户端的当前 ip,并基于此将客户端的位置保存在 :longitude:latitude 属性中

现在我有另一个模型,名为 Hotels。这个模型有一个不会改变的地址属性。

class Hotel < ApplicationRecord
  geocoded_by :address
  after_validation :geocode, :if => :address_changed?
end

现在我需要一种方法,以便我可以找到客户方圆 20 公里附近的酒店。我试过@client.nearbys(20) 但这会给我附近的其他客户,我想在附近有酒店。

请有人帮忙。在此先感谢:)

【问题讨论】:

【参考方案1】:

只要我能理解,你必须找到距离客户 20 公里以内的酒店。

因此,由于您能够找到客户的纬度和经度,因此您可以搜索距离该经度和纬度 20 公里的酒店。

lat=@client.latitude
long=@client.longitude

Hotel.near([lat,long], 20, :units => :km)

【讨论】:

非常感谢,非常感谢。我是 Rails 新手 :)。这就像一个魅力 @Shadid 我很高兴它帮助了你:)

以上是关于Rails Geocoder,找到Model2附近的所有Model1的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Ruby Geocoder/Mongoid 查询某个点附近的对象?

“在我附近找到”的 Rails 地理编码/地理定位选项

找到给定半径内的附近位置

Rails Geocoder 限制地区/国家

使用rspec进行Rails Geocoder测试

如何通过远距离以外的其他方式订购rails geocoder gem的结果