如何在Grails中实现空间(地理位置)搜索?

我正在使用MySql处理Grails 1.3.2。我需要在数据库中存储某些位置的纬度和经度,然后根据用户的当前位置,我需要返回该位置特定半径范围内的项目。 所以,我们基本上有以下要求: 搜索具有用户当前坐标的给定半径的位置 提供全文搜索。我们目前正在使用搜索功能 在用户当前坐标的给定半径内进行全文搜索的组合。 我一直在研究我们在这里的各种选项,并想知道您对此有何看法/建议。我们这里有各种选择: Lucene Spatial Search(http://wiki.apache.org/lucene-java/SpatialSearch)并研究如何使用它进行搜索 Grails Solr插件(http://www.grails.org/plugin/solr)。但是这不会返回域对象。 Grails Stitches Plugin(http://www.grails.org/plugin/stitches)。除了作者的网站(http://www.philliprhodes.com/content/stitches-30-seconds)之外,没有很多文档。 MySql空间扩展以及域类的所有字段上的全文索引。如果我们走这条路,那么我们就不会使用可搜索的了。 Postgres / PostGIS与hibernate-spatial集成(http://blog.mollusca.ch/2008/10/4/grails-spatial-data-postgis) 我相信这是与地图集成的任何应用程序中的一个非常基本的要求。 所以,我真的很想知道实现这个功能的最合适的方法。 谢谢     
已邀请:
(我使用Long / Lat制作了一个原型来查找半径范围内的行,但是现在已经放弃了原来支持英国的GridRef系统) 作为第一步,不要使用基于计算字段的WHERE条件(例如,基于给定坐标和行的坐标的实际距离)。 相反,试试这个: 想象一下半径=最大距离的圆 使用弯曲的经度线在它周围画一个盒子。 在该框中查找项目。 在实践中,这意味着: 计算出经度表示您在给定纬度的最大距离 计算纬度表示给定经度的最大距离(当使用球形地球模型时,此乘数将固定)。 SELECT * FROM places WHERE long> $ westside AND long< $ eastside AND lat< $ northside和lat> $ southside 这意味着您可以进行非常简单的计算,以获得覆盖面积比实际圆大30%的模糊子集。如果你想要添加文本搜索,可以选择SELECT FROM(子查询)或者在上面的简单比较之后添加你的文本子句,因为文本搜索的计算成本很高。     
有一个Grails Spatial插件。看起来它的一些子插件确实支持搜索,比如HDB插件。     

要回复问题请先登录注册