2016-08-06 2 views
0

Существует поддержка геопространственного запроса в Java (https://cloud.google.com/appengine/docs/java/datastore/geosearch), но, похоже, нет абсолютно никакой документации для того, чтобы сделать то же самое в Go. Grepping google.golang.org/appengine для «geo» ничего не делает, кроме построения и проверки GeoPoint значений.AppEngine: Geospatial queries под Go

Поскольку Java поддерживает эту поддержку, очевидно, должна быть поддержка API. У кого-нибудь есть опыт с этим или советом? Благодарю.

Edit:

Похоже, что ограниченная поддержка есть предлагается только для Java:

http://startup-with-gae.blogspot.com/2016/01/geospatial-queries-with-google-cloud.html

ответ

1

Пришло, официально, полностью поддерживается в Datastore в это время. Используйте geohash: https://github.com/gansidui/geohash/blob/master/geohash.go. Это уменьшает эту проблему при сохранении геопространственного хранения/RTREE до строкового префикса-поиска.

Это позволяет получить хэш, который описывает конкретное местоположение, а затем вы можете взять эту строку и последовательно удалить символы с правой стороны (и делают строки префикса-поиск против вашего списка мест и их geohashes с тем, что остается), чтобы найти места вблизи вашего основного местоположения и расширяться наружу.

Существует предсказуемое количество географической точности между каждым смежным символом строки geohash, поэтому вы можете использовать этот или общий префиксный байт между главной точкой и широтой/долготой угла окна карты, чтобы идентифицировать все места который должен появиться внутри него.