【发布时间】:2015-05-11 03:48:50
【问题描述】:
我正在使用 PHP-GDS 库来访问 AppEngine DataStore,但这似乎不支持地理位置查询。我目前将纬度和经度存储在单独的列中。
2015 年推荐的方式是什么(2010 年有很多建议)用地理查询查询 DataStore?
示例用例: - 从 {Lat, Long} 返回最近的 10 行,按距离排序。
【问题讨论】:
-
在 Python per cloud.google.com/appengine/docs/python/search 和 Java per(相同但使用 java 而不是 python)和 Go per(相同但使用 go 代替)中,推荐的解决方案是 Search API。然而,根据stackoverflow.com/questions/26005906/…,PHP 似乎不存在(目前);推荐的解决方案是用三种支持搜索的语言之一编写一个模块(您的应用程序的其余部分保留在 PHP 中)并仅将该模块用于搜索 API 访问。
-
谢谢 - 我也可以 1. 使用 PHP 将 lat 和 lon 存储在数据存储中 2. 编写一个可以通过 url 访问的模块,例如/search?lat=1.2&long=1.3 3. 以 JSON 格式返回结果 4. 解析 JSON 并呈现给用户?
-
为清晰起见重新措辞。
-
@XCodeWarrier,几乎——搜索 API 的工作方式有点不同——不是直接在数据存储上!我推荐我上面给出的 URL,以了解例如 Python 模块需要做什么来准备文档以从数据存储实体进行搜索。 JSON 来回当然没问题。
-
Datastore 不直接支持地理查询。如果您打算将搜索组件拆分为 Python 并利用搜索 API,请查看这个 GitHub 存储库(我的),我正是这样做的 - 有一个用于从 PHP 访问搜索 API 的 Python 模型。 github.com/tomwalder/phpne14-text-search
标签: php google-app-engine geolocation geo