Существует три типа поиска, предоставляемые API Адресов: Поиск Места , Поиск поблизости и Текстовый поиск .Каждый позволяет указать местоположение с радиусом, с которого можно начать поиск.Местоположение указывается в виде пары широта / долгота.Вы получили ZERO_RESULTS, потому что вы не указали местоположение для своего запроса.Если параметр location не указан, «API использует смещение IP-адреса по умолчанию» согласно документации.Таким образом, нет магазинов Aldi в пределах диапазона расположения вашего IP-адреса.
Найти место вернет только один результат, хотя, по моему опыту, иногда он возвращает два.И Поиск поблизости и Текстовый поиск вернут до 60 результатов поиска.Все три поисковых запроса Place позволяют указывать радиус вокруг вашего местоположения до 50 километров.Если вам нужно найти места Aldi по всему миру, вам нужно сделать немало запросов.
Я нахожусь неделями в подобном проекте, чтобы найти все места для списка сетей ресторанов в США.Я обнаружил, что Ближайший поиск - лучший выбор для моего варианта использования, и его следует всегда учитывать, прежде чем переходить к текстовому поиску проекта.Я проверил поиск Aldi с помощью поиска рядом и текстового поиска и обнаружил, что они предоставляют идентичный набор результатов place_id .Этот запрос на поиск в окрестностях найдет все местоположения Алди в пределах 50 километров от Нью-Йорка:
https://maps.googleapis.com/maps/api/place/nearbysearch/json?location=40.785276%2C-73.9651827&name=Aldi&radius=50000&key=MY_API_KEY
Это то же самое, что и текстовый поиск:
https://maps.googleapis.com/maps/api/place/textsearch/json?query=Aldi&location=40.785276%2C-73.9651827&radius=50000&key=MY_API_KEY
Так почему нас должно волновать?Поиск текста в соответствии с документацией API «... возвращает все доступные поля данных для выбранного места, и вам будет выставлен соответствующий счет».Кроме того, «... служба текстового поиска подлежит десятикратному умножению. То есть каждый ваш запрос текстового поиска будет учитываться как 10 запросов против вашей квоты».Запрос на поиск в окрестностях дешевле и не подлежит 10-кратному множителю.Он возвращает подмножество доступных полей данных, которые вы можете счесть достаточными.Если вам нужны дополнительные поля данных, вы можете получить только то, что вам нужно, из запроса Places Detail.Сделайте математику для вашего приложения, прежде чем выбрать текстовый поиск.Это может быть значительно дешевле при использовании поиска рядом с последующими запросами Places Detail, если это необходимо.В любом случае, вы не хотите, чтобы вас шокировали, когда вы неожиданно попали в пределы квоты из-за 10-кратного множителя ИЛИ выставленные расходы на транзакции превысили ваши ожидания!
Я обнаружил дополнительные препятствия, которые следует учитывать для проектов, пытающихся найти все местоположения для бизнеса на большой территории:
- API Адресов предпочтет места в пределах вашего радиуса, но будетвключите места за пределами вашего радиуса, если он определит, что они актуальны и в пределах 60 мест.У меня были места, возвращенные более чем в 450 километрах от запрошенной позиции поиска.
- Результаты будут возвращены для мест с названиями, которые НЕ соответствуют тому, что вы искали.В моем поиске ресторана Benihana в Сиэтле запрос на поиск поблизости возвращает только ресторан с именем Hamansu.По результатам расследования, это связано с тем, что в Сиэтле нет бениханы, однако Хамансу похож на Бенихану в том, что здесь подают японские блюда на гриле у стола.В документации API говорится, что ваш поисковый запрос будет «сопоставлен со всем контентом, который Google проиндексировал для этого места, включая, помимо прочего, имя, тип и адрес, а также отзывы клиентов и другой сторонний контент».
- Результаты возвращаются по 20 за раз.Если есть еще результаты, предоставляется page_token, чтобы сделать запрос на получение следующей страницы, содержащей до 20 результатов.Каждый запрос платный.Вам будет выставлен счет за 3 запроса, необходимые для получения 60 результатов.Я не говорю, что это плохо, просто помните о расходах и использовании квот, которые вы несете с этим API.
- Если для вашего радиуса имеется более 60 результатов, вы не нашли все возможные местоположения в нем.И вы не можете с уверенностью определить, какой эффективный радиус был покрыт для 60 результатов.Вам нужно искать с достаточно маленьким радиусом, чтобы получить <60 результатов для каждого запроса.Поиск по всему миру потребует большой квоты и долларового бюджета.</li>