【发布时间】:2016-02-03 20:36:35
【问题描述】:
在我的 Rails 应用程序中,我有搜索区域,它们是地理多边形(使用 Google Maps API 创建)。一旦在地图上绘制,搜索区域的坐标就会作为散列数组保存到记录中。它看起来像这样:
SearchArea.last.geo
=> [{"lat"=>"48.425555463221066", "lng"=>"-123.3793830871582"}, {"lat"=>"48.41336528699442", "lng"=>"-123.37800979614258"}, {"lat"=>"48.41006090395106", "lng"=>"-123.31672668457031"}, {"lat"=>"48.44696663691928", "lng"=>"-123.32067489624023"}]
我还有一些位置记录,它们的坐标保存为哈希,如下所示:
Location.last.geo
=> {"lat"=>"28.8138124", "lng"=>"-96.9977682"}
我需要能够搜索/过滤地理坐标位于给定搜索区域内的记录。我没有地理空间编程的经验,所以我希望有人可以在这里伸出援手。将不胜感激!
我看过的东西:
- 我知道 Google Maps API 有一个 Geometry Library。不幸的是,这是客户端。
- 我找到this的答案,引出了this的文章,不过是用C写的。
- 2009 年的This article 有一些看起来应该可以工作的代码,但我不确定如何使用纬度/经度坐标来实现它。
- This wiki page 有很多不同语言的 Ray-casting 实现,但同样,我不知道如何在 Ruby/Rails 中实现它。
【问题讨论】:
-
不确定这有多大帮助,但 PostGis 可以按多边形搜索 - stackoverflow.com/questions/27830521/… - 并在 Rails 中使用 - ngauthier.com/2013/08/postgis-and-rails-a-simple-approach.html
-
MongoDB 还支持“多边形”地理空间查询。您希望使用什么数据库? docs.mongodb.org/manual/reference/operator/query-geospatial
-
PostGis 的东西看起来很酷,可以去看看。我正在运行 PostgreSQL。理想情况下不希望将数据库撕裂,但如果这是我唯一的选择,我会试一试!
-
嘿 Nate,PostGis 最终难以使用,但最终还是值得的。感谢您的建议! :)
标签: ruby-on-rails ruby google-maps geospatial raycasting