Мы создаем поисковые индексы в Google App Engine, используя Google Cloud Search API. Индексный документ имеет столбец с типом данных Geo Point, скажем, locationGeoPt, в котором хранится пара широты и долготы наших адресов на запись. Таким образом, документ может иметь несколько пар широты и долготы в этом столбце следующим образом:
locationGeoPt: (32,651, -96,864) (33,114, -96,675)
Теперь идет часть запроса, нам нужно запросить этот документ, где расстояние этих адресов меньше некоторого заданного расстояния, что-то вроде следующего:
расстояние (locationGeoPt, геопункт (32.9654778, -96.82974030000003)) <400 </p>
Для этого мы используем функцию «расстояние», предоставляемую SEARCH API.
Теперь в чем проблема:
То, что мы сравниваем с полем locationGeoPt, это пара LAT и Long для расстояния, скажем, 400, как написано выше.
Поле 'locationGeoPt' хранит несколько пар LAT-LONG, но оно сравнивается с первым набором LAT-LONG и не сравнивается с оставшимся набором пар, если первое совпадение не удалось. Например, первая пара LAT-LONG в locationGeoPt находится не в пределах 400 метров, а вторая.
Кто-нибудь может подсказать, как решить эту проблему?