问题
How should I create a GQL query that returns the nearest entities (from my current location) based on their GeoPt property? Should I just created a 'distance' function that calculates for a set of entities with a reasonably close distance?
Thanks ahead of time!
回答1:
App Engine doesn't treat GeoPt properties specially - it has no built in spatial indexing. There are a number of third-party libraries that add support for spatial indexing, however. The best one (in my opinion) being geomodel.
回答2:
You could store the locations in App Engine in a Quadtree structure.
Here's one description of how it would be done: Geographic Queries on Google App Engine
回答3:
I guess I'm going to some kind of digger achievement, but here it is:
I was looking for a solution for this issue and came across this Google's oficial docs: https://cloud.google.com/appengine/docs/java/search/query_strings#Java_Queries_on_geopoint_fields
I really think that Google should have made some more noise about this. I find it weird that they have a lesson on Python for doing the same thing but says nothing on how to do it for Java.
回答4:
geohash set very close points in different hashes so another or next layer should be preferred. you can make a radius, quadratic inside/outside shape test or even any mathematical shape and test whether the point is within our outside the shape.
来源:https://stackoverflow.com/questions/1033240/how-do-i-query-for-entities-that-are-nearby-with-the-geopt-property-in-google