В документации для Google Cloud Datastore подробно описан тип данных Географическая точка [1].В то время как в библиотеке Java нет строго соответствующего класса, существует класс LatLng
[2], который представляется каноническим эквивалентом.
Хотя я могу хранить значение просто отличнои я могу запросить точные местоположения, предоставив полностью построенный экземпляр LatLng
, подобный следующему:
ofy.load().type(Site.class) // Site is a custom class, whose latLng field is a LatLng-type
.filter("latLng", LatLng.of(26.329,127.744))
.first()
.now()
Я не могу выполнить неточные запросыизначально, по крайней мере, не на консоли.Хотя я могу вроде сделать что-то подобное в Objectify:
ofy.load().type(Site.class)
.filter("latLng >", LatLng.of(26.0,127.0))
.filter("latLng <", LatLng.of(90,127.750))
.first()
.now()
Мой вопрос: есть ли встроенная / первоклассная поддержка геопространственных запросов в хранилище данных?Или этот тип координатной геометрии - «хакерство» - единственный приемлемый способ выполнения таких поисков / запросов?
[1] https://cloud.google.com/datastore/docs/concepts/entities#geographical_point [2] https://googleapis.dev/java/google-cloud-clients/0.111.0-alpha/com/google/cloud/datastore/LatLng.html