Я пытаюсь использовать textSearch для мест Google, чтобы найти все магазины определенного бренда (позволяет скажем, Levi's), поэтому я буду перебирать результаты, используя next_page_token, но, похоже, я столкнулся с проблемой не более 60 возвращаемых результатов. Можно ли как-то улучшить эти результаты или кто-нибудь знает другой сервис, который может обеспечить такие результаты?
Глобальный поиск Google Maps
Ответы (1)
К сожалению, нет другого способа обойти ограничение в 60 записей, кроме умного опроса при текстовом поиске, и результаты не могут быть отсортированы. Лучшее решение будет поблизости. Параметры API почти такие же, как у textsearch, с тремя отличиями:
- Ваш радиус будет автоматически установлен на 50 км.
rankby=distance
позволяет сортировать результаты по расстоянию от вашегоlocation
(вы поймете, почему это важно)query
становитсяkeywords
и больше не является истинным параметром поиска в Картах Google - это просто список ключевых слов.
Возвращаемые результаты аналогичны возвратам textSearch
- и имеют уникальный идентификатор, который также пригодится.
Как все сканировать
Сканирование области довольно просто. Вы ограничены 60 результатами на запрос, поэтому мы будем выполнять сортировку по расстоянию, чтобы мы точно знали, что наш последний результат набора также является самым дальним. Это позволяет вам создать максимально вероятный радиус для вашего запроса - и основывать на этом ваш следующий поиск.
Вот смоделированный результат в фотошопе. Я выполнил случайный запрос, основанный на точке во Франции, и обозначил радиус поиска, используя зеленый кружок:
Зеленый кружок обозначает результаты. Это позволяет мне сформулировать три новых запроса, все три на краю текущей зоны (но внутри нее):
Вы заметите, что первый запрос полностью покрывается вторым. Это позволяет вам получить полные результаты в области с минимальным перекрытием, насколько это возможно, и эффективно отсортировать их по идентификатору (чтобы вы знали, что у вас нет дубликатов).
Предостережение: для радиуса 50 км (макс.) потребуется 1 запрос. Радиус 95 км занимает четыре. Радиус 140 км занимает 13. Он быстро увеличивается - так что на вашем месте я бы куда-нибудь кэшировал результаты.
Поле возврата id
гарантированно уникально - reference
привязано к вашему ключу API. Различия? reference
позволяет отправить запрос сведений о месте для получения обновленной информации о месте (некоторая информация здесь).
Надеюсь, это помогло прояснить некоторые моменты.