Из-за ограничений движка GQL было предложено, чтобы люди, желающие выполнить поиск близости, каким-то образом обошли эти ограничения, используя предложенную геомодель. Это может быть не очень элегантное или быстрое решение, но есть что-нибудь, что может остановить кого-нибудь, использующего алгоритм отсюда:
SELECT id, ( 3959 * acos( cos( radians(lat_t) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(lng_t) )
+ sin( radians(lat_t) ) * sin( radians( lat ) ) ) ) AS distance
FROM Stores HAVING distance < 25
ORDER BY distance
как простой способ вычисления расстояния. То есть мы просто вычисляем расстояние вручную для каждой пары (lat, lng) и (lat_t, lng_t), циклически просматривая каждую запись в нашем хранилище данных и, таким образом, получая идентификатор для всех записей, которые находятся в пределах нашего целевого расстояния без прибегнуть к использованию команды HAVING? Таким образом, для подведения итогов мы сделаем простой поиск GQL, чтобы получить все записи и пройтись по всем парам lng / lat и сравнить с нашими целевыми значениями.
http://code.google.com/apis/maps/articles/geospatial.html