在物体附近搜索

时间:2014-07-23 12:24:47

标签: java google-app-engine geolocation google-cloud-datastore objectify

我想在App Engine上使用Datastore和Objectify构建一个后端应用程序来存储位置(在java中)。

一个地方有纬度和经度坐标。现在我想查询"附近的地方#34; (半径100公里)用户的位置。

在SQL中,我会计算SELECT状态中的距离。 但是在使用Objectify的数据存储中,这样的事情是不可能的吗?

所以从我从其他项目中看到的是制作类似地理区域哈希的东西,并将哈希值存储为列表中的字符串,并检查两个地理坐标是否具有相同的geo aread哈希...

例如,我发现这个项目名为java geo model,但似乎不再维护这个项目,我正在寻找可以在生产中使用的东西,在现实世界的应用程序中

是否有人知道有关此主题的图书馆或教程网站?

2 个答案:

答案 0 :(得分:4)

如前所述,最佳答案是使用Search API。但是,您可以在此处找到使用带有地理位置的Objectify的示例:http://www.motomapia.com/

它使用了javageomodel代码。由于geohashing的算法没有改变,我不会太担心代码老了。但是,它本身并不能产生非常准确的结果 - 至少不如搜索API的准确结果那么准确。

地理索引不是一个简单的问题。即使在RDBMS中,计算SELECT中的距离也不是可扩展的解决方案,除非您有专门的索引ala PostGIS。

答案 1 :(得分:1)

Search API允许根据距离进行搜索。