Query Autocomplete (устаревшая версия) позволяет предлагать варианты запросов при вводе текста в поле поиска.
Запросы к устаревшей версии сервиса автозаполнения
Сервис Query Autocomplete (устаревшая версия) входит в состав Places API (устаревшая версия) и использует ключ API и квоту совместно с Places API (устаревшая версия).
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, параметр радиуса не будет принят и приведет к ошибке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'Запрос "Пицца рядом с Пар" с результатами на французском языке:
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 на собственный.
Ответ сервиса автозаполнения запросов (устаревшая версия)
Ответы на запросы автозаполнения (устаревшая версия) возвращаются в формате, указанном в флаге 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
| Поле | Обязательно | Тип | Описание |
|---|---|---|---|
|
Обязательно | Array<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 |
Содержит человекочитаемое название возвращенного результата. Для результатов |
|
Обязательно | Массив<PlaceAutocompleteMatchedSubstring> |
Список подстрок, описывающих местоположение введенного термина в тексте результата прогнозирования, чтобы при необходимости можно было выделить этот термин. Дополнительную информацию можно найти в описании класса PlaceAutocompleteMatchedSubstring. |
|
Обязательно | PlaceAutocompleteStructuredFormat |
Предоставляет предварительно отформатированный текст, который можно показывать в результатах автозаполнения. Этот текст должен отображаться "как есть", без дополнительной программной обработки. Подробнее PlaceAutocompleteStructuredFormat… |
|
Обязательно | Array<PlaceAutocompleteTerm> |
Массив терминов, определяющих каждый раздел возвращенного описания (раздел описания обычно заканчивается запятой). Каждая запись в массиве содержит поле Дополнительную информацию можно найти в описании класса PlaceAutocompleteTerm. |
|
необязательно | Целое число |
Расстояние по прямой в метрах от исходной точки. Это поле возвращается только в запросах, сделанных с помощью |
|
необязательно | string |
уникальный текстовый идентификатор места. Чтобы извлечь информацию о месте, передайте этот идентификатор в поле placeId запроса к Places API. Подробнее об идентификаторах мест… |
|
необязательно | string |
См. place_id. |
|
необязательно | Array<string> |
Массив типов, относящихся к этому месту. Примеры: |
PlaceAutocompleteMatchedSubstring
| Поле | Обязательно | Тип | Описание |
|---|---|---|---|
|
Обязательно | число |
Длина совпадающей подстроки в тексте результата подсказки. |
|
Обязательно | число |
Начальная позиция соответствующей подстроки в тексте результата прогноза. |
PlaceAutocompleteStructuredFormat
| Поле | Обязательно | Тип | Описание |
|---|---|---|---|
|
Обязательно | string |
Содержит основной текст подсказки, обычно название места. |
|
Обязательно | Array<PlaceAutocompleteMatchedSubstring> |
Содержит массив со значением Дополнительную информацию можно найти в описании класса PlaceAutocompleteMatchedSubstring. |
|
необязательно | string |
Содержит дополнительный текст подсказки, обычно местоположение места. |
|
необязательно | Массив<PlaceAutocompleteMatchedSubstring> |
Содержит массив со значением Дополнительную информацию можно найти в описании класса PlaceAutocompleteMatchedSubstring. |
PlaceAutocompleteTerm
| Поле | Обязательно | Тип | Описание |
|---|---|---|---|
|
Обязательно | число |
Начальная позиция этого термина в описании, измеряемая в символах Юникода. |
|
Обязательно | string |
Текст термина. |