首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用地理编码器查找附近地点- Rails 4

使用地理编码器查找附近地点- Rails 4
EN

Stack Overflow用户
提问于 2015-09-28 21:03:46
回答 3查看 1.1K关注 0票数 1

我正在使用地理编码器来查找用户位置附近的位置。但它只给出经度/纬度(如果之前存储了一些地方,则给出附近的地方)。我想要得到的东西是,当用户输入区域名称时,说“自由女神像”,那么结果应该显示“自由女神像”附近的地方,有一个特定的标签说“酒店”。

有一个web很好地实现了它。你可以在Here上查看

我不是要求完整的代码片段,而是寻找有用的建议,让我可以让我的应用程序工作,或者我必须改变我的gem。任何帮助我们都将不胜感激。

EN

回答 3

Stack Overflow用户

发布于 2015-09-28 21:09:50

要在“自由女神像”附近找到一个带有“PlaceTag的酒店,应该是这样的:

代码语言:javascript
复制
Place.near("statue of liberty").where(tags: [:hotel]).all

由于您完全没有提供关于您的模式或模型的信息,因此我使用了通用名称。不过,这是我一直以来的做法。

有关更多信息,请参阅GeoCoder docs

票数 0
EN

Stack Overflow用户

发布于 2015-09-28 21:36:22

使用Geonames_api

然后你可以开发函数,并向它发送距离,radius ( zipcode )如下:

代码语言:javascript
复制
def nearby(zipcode, radius)
  GeoNamesAPI.username = "yourusername@yourdomain.com"
  GeoNamesAPI.lang = :en
  geo_name_objects = GeoNamesAPI::NearbyPostalCode.where(country: "US", postalcode: zipcode, radius: radius)
  zip_codes_names = geo_name_objects.postal_codes.map{|h| h.slice("postalCode").values}.flatten.uniq - [zipcode]
end

此函数将返回当前邮政编码附近距离小于/等于现有半径的所有邮政编码

票数 0
EN

Stack Overflow用户

发布于 2015-09-28 21:40:16

我个人使用geokitgeokit-rails gem。要使用它们,您只需将acts_as_mappable :default_units => :kms (或英里)添加到您希望能够定位的模型中,然后只需使用:

示例模型: location.rb

代码语言:javascript
复制
Location.closest(origin: "statue of liberty")

作为一个普通的活动记录查询,它可以链接任何你想要的.where(tags: [:hotel])

提示: geokit使用外部地理编码器,默认是google地理编码器,如果调用太频繁,它会给出超时错误。我建议使用Redis以键-值的方式缓存地理编码结果,例如$redis[address] = location_id,并且有一个方法可以在缓存中立即检索位置。这样,您可以大大降低地理位置超时错误的风险。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32823711

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档