Query Autocomplete (устаревшая версия) позволяет предлагать варианты запросов при вводе текста в поле поиска.
Запросы к Query Autocomplete (Legacy)
Query Autocomplete (Legacy) – это часть Places API (Legacy). У них общий ключ API и квота.
Query Autocomplete (Legacy) позволяет добавлять в приложение подсказки для географических запросов. Вместо того чтобы искать конкретное место, пользователь может ввести категорию, например "пицца в Москве", и сервис предложит список запросов, соответствующих этой строке. Поскольку Query Autocomplete (Legacy) может сопоставлять как полные слова, так и подстроки, приложения могут отправлять запросы по мере ввода пользователем, чтобы предоставлять подсказки на лету.
Запрос Query Autocomplete (Legacy) – это URL с протоколом HTTP следующего формата:
https://maps.googleapis.com/maps/api/place/queryautocomplete/output?parameters
где output может быть json или xml.
Для отправки запроса Query Autocomplete (Legacy) необходимы определенные параметры.
Параметры разделяются амперсандами (&) в соответствии со стандартом написания URL. Список параметров и их возможных значений приведен ниже.
Обязательные параметры
ввод
Текстовая строка, по которой выполняется поиск. На основе этой строки сервис автозаполнения мест возвращает список подходящих мест, упорядоченных по их предполагаемой релевантности.
Необязательные параметры
language
Язык, на котором будут возвращены результаты.
- Вы можете ознакомиться со списком поддерживаемых языков. Google часто обновляет список поддерживаемых языков, поэтому он может быть неполным.
-
Если параметр
languageне указан, API пытается использовать язык, заданный в заголовкеAccept-Language. - API пытается предоставить почтовый адрес, который будет понятен как пользователю, так и местным жителям. Для этого он возвращает почтовые адреса на местном языке, при необходимости транслитерируя их в систему письма, понятную пользователю, с учетом предпочитаемого языка. Все остальные адреса возвращаются на предпочитаемом языке. Все компоненты адреса возвращаются на одном языке, который выбирается по первому компоненту.
- Если название на выбранном языке недоступно, API использует наиболее близкое совпадение.
- Предпочтительный язык немного влияет на набор результатов, возвращаемых API, и на порядок их возврата. Геокодер по-разному интерпретирует сокращения в зависимости от языка. Например, это касается сокращений для типов улиц или синонимов, которые могут быть допустимы в одном языке, но не в другом. Например, utca и tér – это синонимы слова "улица" на венгерском языке.
местоположение
Определяет точку, вокруг которой выполняется поиск, в виде координат latitude,longitude.
Сервис Places использует местоположение, чтобы отдавать предпочтение результатам в области, заданной параметрами location и radius. Результаты за пределами заданной области также могут быть показаны.
location может быть переопределен, если в параметре query явно указано местоположение, например Market in Barcelona. Использование кавычек в запросе также может повлиять на вес, присваиваемый location и radius.
вычесть
Позиция последнего символа в поисковом запросе, который сервис использует для подбора подсказок. Например, если входные данные – Google, а смещение – 3, то сервис будет искать совпадения с Goo. Строка, определяемая смещением, сопоставляется только с первым словом во входном термине. Например, если входной термин – Google abc, а смещение – 3, сервис попытается найти совпадение с Goo abc. Если смещение не указано, сервис будет использовать весь запрос. Обычно смещение должно быть установлено в положение текстового курсора.
радиус
Определяет расстояние (в метрах), в пределах которого нужно возвращать результаты. С помощью параметров location и radius можно настроить поиск так, чтобы предпочтение отдавалось результатам в пределах указанной окружности.
В этом случае сервис Places будет в первую очередь показывать результаты в пределах указанной области, однако более отдаленные точки также могут быть включены в ответ.
Радиус будет автоматически ограничен максимальным значением в зависимости от типа поиска и других параметров.
- Автозаполнение: 50 000 метров.
-
Поиск поблизости:
- с
keywordилиname– 50 000 метров; -
без
keywordилиname-
До 50 000 метров. Радиус корректируется динамически в зависимости от плотности застройки, независимо от параметра
rankby. -
Если используется параметр
rankby=distance, параметр radius не принимается и возвращается ошибкаINVALID_REQUEST.
-
До 50 000 метров. Радиус корректируется динамически в зависимости от плотности застройки, независимо от параметра
- с
- Автозаполнение запросов: 50 000 м.
- Текстовый поиск: 50 000 метров.
Примеры использования Query Autocomplete (Legacy)
URL
https://maps.googleapis.com/maps/api/place/queryautocomplete/json ?input=pizza%20near%20par &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/queryautocomplete/json?input=pizza%20near%20par&key=YOUR_API_KEY'Запрос "Pizza near Par" с результатами на французском языке:
URL
https://maps.googleapis.com/maps/api/place/queryautocomplete/json ?input=pizza%20near%20par &language=fr &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/queryautocomplete/json?input=pizza%20near%20par&language=fr&key=YOUR_API_KEY'Обратите внимание, что в этих примерах вам нужно будет заменить ключ API на собственный.
Ответ Query Autocomplete (устаревший)
Ответы Query Autocomplete (Legacy) возвращаются в формате, указанном флагом output в пути URL-запроса. Результаты ниже возвращаются для запроса со следующими параметрами:
URL
https://maps.googleapis.com/maps/api/place/queryautocomplete/json ?input=pizza%20near%20par &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/queryautocomplete/json?input=pizza%20near%20par&key=YOUR_API_KEY'JSON
{ "predictions": [ { "description": "pizza near Paris, France", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 11 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Paris, France", "secondary_text_matched_substrings": [{ "length": 3, "offset": 5 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Paris" }, { "offset": 18, "value": "France" }, ], }, { "description": "pizza near Pari Chowk, NRI City, Omega II, Noida, Uttar Pradesh, India", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 11 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Pari Chowk, NRI City, Omega II, Noida, Uttar Pradesh, India", "secondary_text_matched_substrings": [{ "length": 3, "offset": 5 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Pari Chowk" }, { "offset": 23, "value": "NRI City" }, { "offset": 33, "value": "Omega II" }, { "offset": 43, "value": "Noida" }, { "offset": 50, "value": "Uttar Pradesh" }, { "offset": 65, "value": "India" }, ], }, { "description": "pizza near Disneyland Park, Disneyland Drive, Anaheim, CA, USA", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 22 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Disneyland Park, Disneyland Drive, Anaheim, CA, USA", "secondary_text_matched_substrings": [{ "length": 3, "offset": 16 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Disneyland Park" }, { "offset": 28, "value": "Disneyland Drive" }, { "offset": 46, "value": "Anaheim" }, { "offset": 55, "value": "CA" }, { "offset": 59, "value": "USA" }, ], }, { "description": "pizza near Cathédrale Notre-Dame de Paris, Parvis Notre-Dame - place Jean-Paul-II, Paris, France", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 36 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Cathédrale Notre-Dame de Paris, Parvis Notre-Dame - place Jean-Paul-II, Paris, France", "secondary_text_matched_substrings": [{ "length": 3, "offset": 30 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Cathédrale Notre-Dame de Paris" }, { "offset": 43, "value": "Parvis Notre-Dame - place Jean-Paul-II" }, { "offset": 83, "value": "Paris" }, { "offset": 90, "value": "France" }, ], }, { "description": "pizza near Paris Beauvais Airport, Route de l'Aéroport, Tillé, France", "matched_substrings": [{ "length": 5, "offset": 0 }, { "length": 3, "offset": 11 }], "structured_formatting": { "main_text": "pizza", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "near Paris Beauvais Airport, Route de l'Aéroport, Tillé, France", "secondary_text_matched_substrings": [{ "length": 3, "offset": 5 }], }, "terms": [ { "offset": 0, "value": "pizza" }, { "offset": 6, "value": "near" }, { "offset": 11, "value": "Paris Beauvais Airport" }, { "offset": 35, "value": "Route de l'Aéroport" }, { "offset": 56, "value": "Tillé" }, { "offset": 63, "value": "France" }, ], }, ], "status": "OK", }
XML
<AutocompletionResponse> <status>OK</status> <prediction> <description>pizza near Paris, France</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Paris</value> <offset>11</offset> </term> <term> <value>France</value> <offset>18</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>11</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Paris, France</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>5</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> <prediction> <description>pizza near Pari Chowk, NRI City, Omega II, Noida, Uttar Pradesh, India</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Pari Chowk</value> <offset>11</offset> </term> <term> <value>NRI City</value> <offset>23</offset> </term> <term> <value>Omega II</value> <offset>33</offset> </term> <term> <value>Noida</value> <offset>43</offset> </term> <term> <value>Uttar Pradesh</value> <offset>50</offset> </term> <term> <value>India</value> <offset>65</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>11</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Pari Chowk, NRI City, Omega II, Noida, Uttar Pradesh, India</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>5</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> <prediction> <description>pizza near Disneyland Park, Disneyland Drive, Anaheim, CA, USA</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Disneyland Park</value> <offset>11</offset> </term> <term> <value>Disneyland Drive</value> <offset>28</offset> </term> <term> <value>Anaheim</value> <offset>46</offset> </term> <term> <value>CA</value> <offset>55</offset> </term> <term> <value>USA</value> <offset>59</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>22</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Disneyland Park, Disneyland Drive, Anaheim, CA, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>16</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> <prediction> <description>pizza near Cathédrale Notre-Dame de Paris, Parvis Notre-Dame - place Jean-Paul-II, Paris, France</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Cathédrale Notre-Dame de Paris</value> <offset>11</offset> </term> <term> <value>Parvis Notre-Dame - place Jean-Paul-II</value> <offset>43</offset> </term> <term> <value>Paris</value> <offset>83</offset> </term> <term> <value>France</value> <offset>90</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>36</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Cathédrale Notre-Dame de Paris, Parvis Notre-Dame - place Jean-Paul-II, Paris, France</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>30</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> <prediction> <description>pizza near Paris Beauvais Airport, Route de l'Aéroport, Tillé, France</description> <term> <value>pizza</value> <offset>0</offset> </term> <term> <value>near</value> <offset>6</offset> </term> <term> <value>Paris Beauvais Airport</value> <offset>11</offset> </term> <term> <value>Route de l'Aéroport</value> <offset>35</offset> </term> <term> <value>Tillé</value> <offset>56</offset> </term> <term> <value>France</value> <offset>63</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <matched_substring> <offset>11</offset> <length>3</length> </matched_substring> <structured_formatting> <description>pizza</description> <subdescription>near Paris Beauvais Airport, Route de l'Aéroport, Tillé, France</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> <subdescription_matched_substring> <offset>5</offset> <length>3</length> </subdescription_matched_substring> </structured_formatting> </prediction> </AutocompletionResponse>
Когда сервис Places возвращает результаты поиска в формате JSON, он помещает их в массив predictions. Даже если сервис не возвращает результатов (например, если location находится в отдаленном месте), он все равно возвращает пустой массив predictions. Ответы XML состоят из нуля или более элементов <prediction>.
PlacesQueryAutocompleteResponse
| Поле | Обязательно | Тип | Описание |
|---|---|---|---|
|
Обязательно | Массив<PlaceAutocompletePrediction> |
Содержит массив подсказок. Подробную информацию можно найти в статье PlaceAutocompletePrediction. |
|
Обязательно | PlacesAutocompleteStatus |
Содержит статус запроса и может содержать сведения для отладки, которые помогут вам выяснить, почему запрос не был выполнен. Дополнительную информацию можно найти в разделе PlacesAutocompleteStatus. |
|
необязательно | string |
Если сервис возвращает код статуса, отличный от |
|
необязательно | Array<string> |
Если сервис возвращает дополнительную информацию о спецификации запроса, в объекте ответа может быть дополнительное поле |
PlacesAutocompleteStatus
Коды статуса, возвращаемые сервисом.
OKозначает, что запрос к API успешно выполнен;-
ZERO_RESULTS– означает, что поиск успешно выполнен, однако результаты не найдены. Такое может произойти, если в поиске были переданы границы в удаленном местоположении. -
INVALID_REQUESTозначает, что запрос к API сформирован неправильно, обычно из-за отсутствия параметраinput. -
OVER_QUERY_LIMIT, указывающий на любое из следующего:- Вы превысили лимиты на количество запросов в секунду.
- В вашем аккаунте не включены платежные функции.
- Превышен месячный бонус в размере 200 долларов США или заданное ограничение на использование.
- Указанный способ оплаты больше не действует (например, истек срок действия кредитной карты).
-
REQUEST_DENIEDуказывает, что запрос был отклонен. Обычно это происходит по следующим причинам:- В запросе отсутствует ключ API.
- Недопустимый параметр
key.
UNKNOWN_ERRORозначает неизвестную ошибку.
Когда сервис Places возвращает результаты поиска в формате JSON, он помещает их в массив predictions. Даже если сервис не возвращает результатов (например, если location находится в отдаленном месте), он все равно возвращает пустой массив predictions. Ответы XML состоят из одного или нескольких элементов <prediction>.
PlaceAutocompletePrediction
| Поле | Обязательно | Тип | Описание |
|---|---|---|---|
|
Обязательно | string |
Содержит человекочитаемое название возвращенного результата. Для результатов |
|
Обязательно | Array<PlaceAutocompleteMatchedSubstring> |
Список подстрок, описывающих местоположение введенного термина в тексте результата подсказки, чтобы при желании его можно было выделить. Подробную информацию можно найти в описании класса PlaceAutocompleteMatchedSubstring. |
|
Обязательно | PlaceAutocompleteStructuredFormat |
Предоставляет предварительно отформатированный текст, который может быть показан в результатах автозаполнения. Этот текст должен отображаться "как есть", без дополнительной программной обработки. Дополнительную информацию можно найти в статье PlaceAutocompleteStructuredFormat. |
|
Обязательно | Array<PlaceAutocompleteTerm> |
Содержит массив терминов, идентифицирующих каждый раздел возвращенного описания (раздел описания обычно заканчивается запятой). Каждый элемент массива содержит поле Дополнительную информацию можно найти в описании класса PlaceAutocompleteTerm. |
|
необязательно | Целое число |
Расстояние по прямой в метрах от пункта отправления. Это поле возвращается только для запросов, выполненных с помощью |
|
необязательно | string |
уникальный текстовый идентификатор места. Чтобы получить информацию о месте, передайте этот идентификатор в поле placeId запроса Places API. Подробнее об идентификаторах мест… |
|
необязательно | string |
См. place_id. |
|
необязательно | Array<string> |
Массив типов, применимых к этому месту. Примеры: |
PlaceAutocompleteMatchedSubstring
| Поле | Обязательно | Тип | Описание |
|---|---|---|---|
|
Обязательно | число |
Длина совпадающей подстроки в тексте результата подсказки. |
|
Обязательно | число |
Начальное местоположение совпадающей подстроки в тексте результата подсказки. |
PlaceAutocompleteStructuredFormat
| Поле | Обязательно | Тип | Описание |
|---|---|---|---|
|
Обязательно | string |
Содержит основной текст подсказки, обычно название места. |
|
Обязательно | Array<PlaceAutocompleteMatchedSubstring> |
Содержит массив со значением Подробную информацию можно найти в описании класса PlaceAutocompleteMatchedSubstring. |
|
необязательно | string |
Содержит дополнительный текст подсказки, обычно местоположение места. |
|
необязательно | Array<PlaceAutocompleteMatchedSubstring> |
Содержит массив со значением Подробную информацию можно найти в описании класса PlaceAutocompleteMatchedSubstring. |
PlaceAutocompleteTerm
| Поле | Обязательно | Тип | Описание |
|---|---|---|---|
|
Обязательно | число |
Определяет начальную позицию этого термина в описании, измеряемую в символах Unicode. |
|
Обязательно | string |
Текст термина. |