Place Autocomplete (Legacy) – это веб-сервис, который возвращает подсказки мест в ответ на HTTP-запрос. В запросе указывается текстовая строка поиска и, при необходимости, географические границы. Этот сервис позволяет реализовать функцию автозаполнения для текстового поиска географических объектов, предлагая пользователю по мере ввода запроса варианты мест, например компаний, адресов и достопримечательностей.
Запросы автозаполнения мест (устаревшая версия)
Автозаполнение мест (устаревшее) – это часть Places API, которая использует тот же ключ API и квоты.
Автозаполнение мест (Legacy) может обрабатывать полные слова и их части, предлагая подходящие названия мест, адреса и коды Plus Code. Приложения могут передавать запросы по мере их ввода и сразу же предлагать похожие варианты.
Коды Plus Code должны быть правильно отформатированы. Это означает, что знак плюса нужно экранировать в URL как %2B, а пробелы – как %20.
- Глобальный код содержит четыре знака кода зоны и не менее шести знаков местного кода. Например, глобальный код экранирования URL
849VCWC8+R9– это849VCWC8%2BR9. - Составной код содержит не менее шести знаков местного кода с точными данными о местоположении. Например, экранированный URL-адрес для кода
CWC8+R9 Mountain View, CA, USAбудет выглядеть так:CWC8%2BR9%20Mountain%20View%20CA%20USA.
Возвращенные подсказки предназначены для показа пользователю, чтобы помочь ему выбрать нужное место. Чтобы получить подробную информацию о любом из них, можно отправить запрос Place Details (Legacy).
Запрос Place Autocomplete (Legacy) – это URL HTTP следующего формата:
https://maps.googleapis.com/maps/api/place/autocomplete/output?parameters
где output может принимать одно из следующих значений:
json(рекомендуется) – вывод в формате JSON (JavaScript Object Notation).xml– вывод в формате XML.
Для отправки запроса автозаполнения мест (устаревшая версия) требуются определенные параметры.
Параметры разделяются амперсандами (&) в соответствии со стандартом написания URL. Список параметров и их возможных значений приведен ниже.
Обязательные параметры
ввод
Текстовая строка, по которой выполняется поиск. На основе этой строки сервис автозаполнения мест возвращает список подходящих мест, упорядоченных по их предполагаемой релевантности.
Необязательные параметры
компоненты
Группа мест, которыми вы хотите ограничить результаты.
С помощью компонентов можно фильтровать результаты, чтобы в них входили места из не более чем пяти стран.
Страны нужно указывать в виде двухбуквенного кода по стандарту ISO 3166-1 Alpha-2. Например, components=country:fr ограничит результаты местами во Франции. Чтобы указать несколько стран, передайте несколько фильтров country:XX, разделенных вертикальной чертой |. Например, components=country:us|country:pr|country:vi|country:gu|country:mp ограничит результаты местами в США и на их неинкорпорированных организованных территориях.
language
Язык, на котором будут возвращены результаты.
- Вы можете ознакомиться со списком поддерживаемых языков. Google часто обновляет список поддерживаемых языков, поэтому он может быть неполным.
-
Если параметр
languageне указан, API пытается использовать язык, заданный в заголовкеAccept-Language. - API пытается предоставить почтовый адрес, который будет понятен как пользователю, так и местным жителям. Для этого он возвращает почтовые адреса на местном языке, при необходимости транслитерируя их в систему письма, понятную пользователю, с учетом предпочитаемого языка. Все остальные адреса возвращаются на предпочитаемом языке. Все компоненты адреса возвращаются на одном языке, который выбирается по первому компоненту.
- Если название на выбранном языке недоступно, API использует наиболее близкое совпадение.
- Предпочтительный язык немного влияет на набор результатов, возвращаемых API, и на порядок их возврата. Геокодер по-разному интерпретирует сокращения в зависимости от языка. Например, это касается сокращений для типов улиц или синонимов, которые могут быть допустимы в одном языке, но не в другом. Например, utca и tér – это синонимы слова "улица" на венгерском языке.
местоположение
Точка, вокруг которой нужно получить информацию о местах. Необходимо указать значение latitude,longitude. При указании местоположения также необходимо задать параметр radius. Если параметр radius не указан, то параметр location игнорируется.
locationbias
Отдавать предпочтение результатам в указанной области, задав радиус и координаты широты и долготы или две пары координат широты и долготы, представляющие точки прямоугольника. Если этот параметр не указан, API по умолчанию использует смещение по IP-адресу.
-
IP bias: указывает API использовать привязку к IP-адресу. Передайте строку
ipbias(у этого варианта нет дополнительных параметров). -
Круг: строка, указывающая радиус в метрах, а также широту и долготу в десятичных градусах. Используйте следующий формат:
circle:radius@lat,lng. -
Прямоугольная область. Строка, содержащая две пары координат широты и долготы в десятичных градусах, которые представляют юго-западную и северо-восточную точки прямоугольника. Используйте следующий формат:
rectangle:south,west|north,east. Обратите внимание, что значения для востока и запада находятся в диапазоне от -180 до 180, а для севера и юга – от -90 до 90.
locationrestriction
Ограничить результаты определенной областью, указав радиус и широту/долготу или две пары широты/долготы, представляющие точки прямоугольника.
-
Круг: строка, указывающая радиус в метрах, а также широту и долготу в десятичных градусах. Используйте следующий формат:
circle:radius@lat,lng. -
Прямоугольная область. Строка, содержащая две пары координат широты и долготы в десятичных градусах, которые представляют юго-западную и северо-восточную точки прямоугольника. Используйте следующий формат:
rectangle:south,west|north,east. Обратите внимание, что значения для востока и запада находятся в диапазоне от -180 до 180, а для севера и юга – от -90 до 90.
вычесть
Позиция последнего символа в поисковом запросе, который сервис использует для подбора подсказок. Например, если входные данные – Google, а смещение – 3, то сервис будет искать совпадения с Goo. Строка, определяемая смещением, сопоставляется только с первым словом во входном термине. Например, если входной термин – Google abc, а смещение – 3, сервис попытается найти совпадение с Goo abc. Если смещение не указано, сервис будет использовать весь запрос. Обычно смещение должно быть установлено в положение текстового курсора.
происхождение
Начальная точка, от которой рассчитывается расстояние по прямой до пункта назначения (возвращается как distance_meters). Если это значение не указано, расстояние по прямой не возвращается. Должно быть указано как latitude,longitude.
радиус
Определяет расстояние (в метрах), в пределах которого нужно возвращать результаты. С помощью параметров 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 метров.
регион
Код региона, указываемый как двухсимвольное значение национального домена верхнего уровня. Большинство кодов ccTLD совпадают с кодами ISO 3166-1, однако имеются некоторые исключения. Например, ccTLD Великобритании – uk (.co.uk), а код ISO 3166-1 – gb (технически для Соединенного Королевства Великобритании и Северной Ирландии).
sessiontoken
Случайная строка, которая идентифицирует сеанс автозаполнения для выставления счетов.
Сеанс начинается в тот момент, когда пользователь начинает вводить запрос, а завершается тогда, когда он выбирает место и выполняется вызов информации о местах. В каждом сеансе может быть несколько запросов, после которых следует выбор одного места. Ключи API, используемые для каждого запроса в рамках сеанса, должны принадлежать одному и тому же проекту Google Cloud Console. Когда сеанс завершается, токен перестает быть действительным. Ваше приложение должно создавать новый токен для каждого сеанса. Если параметр sessiontoken не указан или вы повторно используете токен сеанса, плата за сеанс будет начислена как при отсутствии токена (каждый запрос оплачивается отдельно).
Мы рекомендуем следующее:
- Используйте токены сеансов для всех сеансов автозаполнения.
- Создавайте новый токен для каждого сеанса. Рекомендуется использовать UUID версии 4.
- Убедитесь, что ключи API, используемые для всех запросов автозаполнения мест и информации о местах в рамках сеанса, принадлежат одному и тому же проекту Cloud Console.
- Обязательно передавайте уникальный токен сеанса для каждого нового сеанса. Если использовать один токен для нескольких сеансов, плата за каждый сеанс будет начислена по отдельности.
strictbounds
Возвращает только те места, которые находятся строго в пределах региона, заданного параметрами location и radius. Это ограничение, а не предпочтение, то есть результаты за пределами этой географической области не будут возвращаться, даже если они соответствуют запросу.
типы
Вы можете ограничить результаты запроса автозаполнения мест определенным типом, передав параметр types. Этот параметр указывает допустимый тип или коллекцию типов из числа описанных в статье Типы мест. Если опустить этот параметр, в результатах поиска возвращаются все типы.
У места может быть только один основной тип из перечисленных в таблице 1 или таблице 2. Например, отель, в котором подают еду, может быть возвращен только с types=lodging, а не с types=restaurant.
Для значения параметра types можно указать один из приведенных ниже вариантов.
-
До пяти значений из таблицы 1 или таблицы 2. Если значений несколько, разделите их вертикальной чертой
|. Пример:types=book_store|cafe -
Любой поддерживаемый фильтр из таблицы 3. Нельзя смешивать коллекции разных типов.
Запрос будет отклонен с ошибкой INVALID_REQUEST, если:
- Указано более пяти типов.
- указать неизвестный тип;
- указать тип из таблицы 1 или таблицы 2 вместе с фильтром из таблицы 3.
Примеры использования Place Autocomplete (устаревшая версия)
Запрос на поиск заведений, содержащих строку "Amoeba", в области с центром в Сан-Франциско, Калифорния:
URL
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=amoeba &types=establishment &location=37.76999%2C-122.44696 &radius=500 &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=amoeba&types=establishment&location=37.76999%2C-122.44696&radius=500&key=YOUR_API_KEY'Тот же запрос, ограниченный результатами в пределах 500 метров от перекрестка Эшбери-стрит и Хейт-стрит в Сан-Франциско:
URL
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=amoeba &types=establishment &location=37.76999%2C-122.44696&radius=500 &strictbounds=true &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=amoeba&types=establishment&location=37.76999%2C-122.44696&radius=500&strictbounds=true&key=YOUR_API_KEY'Запрос на поиск адресов, в которых содержится слово "Vict". Результаты отображаются на французском языке.
URL
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=Vict &types=geocode &language=fr &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Vict&types=geocode&language=fr&key=YOUR_API_KEY'Запрос городов, содержащих "Vict", с результатами на бразильском португальском языке:
URL
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=Vict &types=(cities) &language=pt_BR&key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Vict&types=(cities)&language=pt_BR&key=YOUR_API_KEY'Обратите внимание, что в этих примерах вам нужно будет заменить ключ API на собственный.
Ответ Place Autocomplete (старая версия)
Ответы Place Autocomplete (Legacy) возвращаются в формате, указанном флагом output в пути URL запроса. Ниже приведены результаты, которые могут быть возвращены по запросу со следующими параметрами:
URL
https://maps.googleapis.com/maps/api/place/autocomplete/json ?input=Paris &types=geocode &key=YOUR_API_KEY
curl
curl -L -X GET 'https://maps.googleapis.com/maps/api/place/autocomplete/json?input=Paris&types=geocode&key=YOUR_API_KEY'JSON
{ "predictions": [ { "description": "Paris, France", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJD7fiBh9u5kcRYJSMaMOCCwQ", "reference": "ChIJD7fiBh9u5kcRYJSMaMOCCwQ", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "France", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "France" }, ], "types": ["locality", "political", "geocode"], }, { "description": "Paris, TX, USA", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJmysnFgZYSoYRSfPTL2YJuck", "reference": "ChIJmysnFgZYSoYRSfPTL2YJuck", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "TX, USA", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "TX" }, { "offset": 11, "value": "USA" }, ], "types": ["locality", "political", "geocode"], }, { "description": "Paris, TN, USA", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJ4zHP-Sije4gRBDEsVxunOWg", "reference": "ChIJ4zHP-Sije4gRBDEsVxunOWg", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "TN, USA", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "TN" }, { "offset": 11, "value": "USA" }, ], "types": ["locality", "political", "geocode"], }, { "description": "Paris, Brant, ON, Canada", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJsamfQbVtLIgR-X18G75Hyi0", "reference": "ChIJsamfQbVtLIgR-X18G75Hyi0", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "Brant, ON, Canada", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "Brant" }, { "offset": 14, "value": "ON" }, { "offset": 18, "value": "Canada" }, ], "types": ["neighborhood", "political", "geocode"], }, { "description": "Paris, KY, USA", "matched_substrings": [{ "length": 5, "offset": 0 }], "place_id": "ChIJsU7_xMfKQ4gReI89RJn0-RQ", "reference": "ChIJsU7_xMfKQ4gReI89RJn0-RQ", "structured_formatting": { "main_text": "Paris", "main_text_matched_substrings": [{ "length": 5, "offset": 0 }], "secondary_text": "KY, USA", }, "terms": [ { "offset": 0, "value": "Paris" }, { "offset": 7, "value": "KY" }, { "offset": 11, "value": "USA" }, ], "types": ["locality", "political", "geocode"], }, ], "status": "OK", }
XML
<?xml version="1.0" encoding="UTF-8"?> <AutocompletionResponse> <status>OK</status> <prediction> <description>Paris, France</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJD7fiBh9u5kcRYJSMaMOCCwQ</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>France</value> <offset>7</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJD7fiBh9u5kcRYJSMaMOCCwQ</place_id> <structured_formatting> <description>Paris</description> <subdescription>France</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, TX, USA</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJmysnFgZYSoYRSfPTL2YJuck</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>TX</value> <offset>7</offset> </term> <term> <value>USA</value> <offset>11</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJmysnFgZYSoYRSfPTL2YJuck</place_id> <structured_formatting> <description>Paris</description> <subdescription>TX, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, TN, USA</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJ4zHP-Sije4gRBDEsVxunOWg</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>TN</value> <offset>7</offset> </term> <term> <value>USA</value> <offset>11</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJ4zHP-Sije4gRBDEsVxunOWg</place_id> <structured_formatting> <description>Paris</description> <subdescription>TN, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, Brant, ON, Canada</description> <type>neighborhood</type> <type>political</type> <type>geocode</type> <reference>ChIJsamfQbVtLIgR-X18G75Hyi0</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>Brant</value> <offset>7</offset> </term> <term> <value>ON</value> <offset>14</offset> </term> <term> <value>Canada</value> <offset>18</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJsamfQbVtLIgR-X18G75Hyi0</place_id> <structured_formatting> <description>Paris</description> <subdescription>Brant, ON, Canada</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> <prediction> <description>Paris, KY, USA</description> <type>locality</type> <type>political</type> <type>geocode</type> <reference>ChIJsU7_xMfKQ4gReI89RJn0-RQ</reference> <term> <value>Paris</value> <offset>0</offset> </term> <term> <value>KY</value> <offset>7</offset> </term> <term> <value>USA</value> <offset>11</offset> </term> <matched_substring> <offset>0</offset> <length>5</length> </matched_substring> <place_id>ChIJsU7_xMfKQ4gReI89RJn0-RQ</place_id> <structured_formatting> <description>Paris</description> <subdescription>KY, USA</subdescription> <description_matched_substring> <offset>0</offset> <length>5</length> </description_matched_substring> </structured_formatting> </prediction> </AutocompletionResponse>
PlacesAutocompleteResponse
| Поле | Обязательно | Тип | Описание |
|---|---|---|---|
|
Обязательно | Массив<PlaceAutocompletePrediction> |
Содержит массив подсказок. Подробную информацию можно найти в статье PlaceAutocompletePrediction. |
|
Обязательно | PlacesAutocompleteStatus |
Содержит статус запроса и может содержать сведения для отладки, которые помогут вам выяснить, почему запрос не был выполнен. Дополнительную информацию можно найти в разделе PlacesAutocompleteStatus. |
|
необязательно | string |
Если сервис возвращает код статуса, отличный от |
|
необязательно | Array<string> |
Если сервис возвращает дополнительную информацию о спецификации запроса, в объекте ответа может быть дополнительное поле |
Особый интерес в результатах представляют элементы place_id, которые можно использовать для запроса более подробных сведений о месте с помощью отдельного запроса. Подробнее о запросах информации о местах (устаревшая версия)…
Ответ XML состоит из одного элемента <AutocompletionResponse> с двумя типами дочерних элементов:
- Один элемент
<status>содержит метаданные запроса. Подробнее о кодах статуса… - Ноль или более элементов
<prediction>, каждый из которых содержит информацию об одном месте. Подробную информацию о результатах можно найти в статье Результаты автозаполнения мест (Legacy). Places API возвращает до пяти результатов.
Рекомендуем использовать флаг json, если только вашему приложению по какой-то причине не требуется xml.
При обработке XML-деревьев нужно быть внимательными, чтобы ссылаться на правильные узлы и элементы. Подробнее о том, как обрабатывать XML с помощью XPath…
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 |
Текст термина. |
Оптимизация автозаполнения мест (устаревшая версия)
В этом разделе приведены рекомендации по эффективному использованию устаревшего сервиса автозаполнения мест.
Рассмотрим некоторые общие рекомендации.
- Чтобы быстро разработать пользовательский интерфейс, используйте виджет автозаполнения мест (Legacy) Maps JavaScript API, виджет автозаполнения мест (Legacy) Places SDK для Android или элемент управления пользовательского интерфейса автозаполнения мест (Legacy) Places SDK для iOS.
- В первую очередь ознакомьтесь с самыми важными полями данных автозаполнения мест (устаревшее).
- Поля с предпочтениями и ограничениями местоположений использовать не обязательно, но они могут значительно повлиять на производительность функции автозаполнения.
- Используйте обработку ошибок в приложении на случай, если API вернет ошибку.
- Убедитесь, что приложение сможет обработать тот случай, если пользователь не выберет место, и предложить вариант продолжения работы.
Рекомендации по оптимизации затрат
Базовая оптимизация затрат
Для оптимизации затрат на сервис автозаполнения мест (Legacy) используйте маски полей в виджетах информации о местах (Legacy) и автозаполнения мест (Legacy), чтобы они возвращали только нужные вам поля данных автозаполнения мест (Legacy).
Дополнительная оптимизация затрат
Рассмотрите возможность программно реализовать сервис Place Autocomplete (Legacy), чтобы получить доступ к тарифу Autocomplete – Per Request и запрашивать результаты Geocoding API о выбранном месте вместо Place Details (Legacy). Тариф Per Request в сочетании Geocoding API будет выгоднее, чем тариф Per Session (на основе сеансов), если соблюдаются два следующих условия:
- Если вам нужны только широта и долгота или адрес выбранного пользователем места, получить эту информацию с помощью Geocoding API дешевле, чем вызывать Place Details (Legacy).
- Если пользователи выбирают подсказку автозаполнения мест в среднем из первых четырех запросов автозаполнения мест (устаревшее) или из меньшего числа, тариф Per Request может быть выгоднее, чем Per Session.
| Что нужно для подачи заявки | Среднее количество запросов автозаполнения мест (Legacy), прежде чем пользователь выберет подсказку | Рекомендуемые решения |
|---|---|---|
| Информация о месте, кроме адреса и местоположения, например название, статус компании или часы работы. | Не ограничено | Автозаполнение мест на основе сеансов (устаревшая версия) с информацией о местах (устаревшая версия) |
| Только адрес и широта и долгота выбранной подсказки | Четыре или меньше | Автозаполнение мест (устаревшее) с оплатой за запрос и Geocoding API |
| Только адрес и широта и долгота выбранной подсказки | Больше четырех | Автозаполнение мест на основе сеансов (устаревшая версия) для приложений, работающих только с адресами |
Возможно, для вашего приложения Geocoding API будет более выгодным вариантом, чем Place Details (Legacy). Это зависит от того, насколько эффективно вы используете Place Autocomplete (Legacy). Эффективность функции автозаполнения мест (устаревшей) в каждом приложении зависит от того, какие запросы вводят пользователи, где используется приложение и реализованы ли рекомендации по оптимизации производительности.
Чтобы найти среднее количество запросов для таблицы, проанализируйте, сколько символов в среднем вводит пользователь, прежде чем выбирать подсказку автозаполнения мест (Legacy) в приложении.
Автозаполнение мест на основе сеансов (устаревшая версия) с информацией о местах (устаревшая версия)
Используйте сервис автозаполнения мест (устаревший) на основе сеансов совместно с информацией о местах (устаревшая версия).
Поскольку вашему приложению требуется информация о местах (устаревшая версия), например название места, статус компании или часы работы, в вашей реализации Place Autocomplete (устаревшая версия) должен использоваться токен сеанса (программно или встроенный в виджеты JavaScript, Android или iOS) за сеанс плюс применимые коды Places Data в зависимости от того, какие поля данных о местах вы запрашиваете.1
Реализация виджета
Функция автоматического управления сеансами встроена в виджеты для JavaScript, Android и iOS. В нее входят как запросы автозаполнения мест (Legacy), так и запрос информации о местах (Legacy) для выбранной подсказки. Обязательно укажите параметр fields, чтобы запрашивались только нужные поля данных автозаполнения мест (Legacy).
Программная реализация
Используйте токен сеанса с запросами Place Autocomplete (Legacy). При запросе информации о местах (Legacy) по выбранной подсказке укажите следующие параметры:
- идентификатор места из ответа автозаполнения мест (устаревшая версия)
- токен сеанса, использованный в запросе автозаполнения мест (устаревшая версия);
- Параметр
fields, указывающий нужные поля данных автозаполнения мест (устаревшее).
Автозаполнение мест с оплатой за запрос (устаревшая версия) с Geocoding API
Реализуйте автозаполнение мест (Legacy) программно без токенов сеансов и вызывайте Geocoding API для выбранной подсказки места.
Geocoding API предоставляет адреса и координаты широты и долготы.
Четыре запроса Autocomplete – Per Request вместе с вызовом Geocoding API о выбранной подсказке места стоят меньше, чем один сеанс автозаполнения мест (Legacy)1.
Вы можете применить рекомендации по оптимизации эффективности, чтобы помочь пользователям получать нужные подсказки, вводя минимальное количество символов.
Автозаполнение мест на основе сеансов (устаревшая версия) для приложений, работающих только с адресами
Используйте сервис автозаполнения мест (устаревший) на основе сеансов совместно с информацией о местах (устаревшая версия).
Поскольку среднее количество запросов, которые вы ожидаете сделать до того, как пользователь выберет подсказку автозаполнения мест (устаревшая версия), превышает стоимость тарифа за сеанс, в вашей реализации автозаполнения мест (устаревшая версия) должен использоваться токен сеанса как для запросов автозаполнения мест (устаревшая версия), так и для связанного запроса информации о местах (устаревшая версия)
за сеанс.
1
Реализация виджета
Функция автоматического управления сеансами встроена в виджеты для JavaScript, Android и iOS. В нее входят как запросы автозаполнения мест (Legacy), так и запрос информации о местах (Legacy) для выбранной подсказки. Обязательно укажите параметр fields, чтобы запрашивались только нужные поля.
Программная реализация
Используйте токен сеанса с запросами Place Autocomplete (Legacy).
Запрашивая у Place Details (Legacy) информацию о выбранной подсказке, указывайте следующие параметры:
- идентификатор места из ответа автозаполнения мест (устаревшая версия)
- токен сеанса, использованный в запросе автозаполнения мест (устаревшая версия);
- Параметр
fields, указывающий поля данных Basic Data, например адрес и геометрические данные.
Рассмотрите возможность откладывать запросы автозаполнения мест (Legacy)
Вы можете попробовать различные стратегии, например откладывать запрос автозаполнения мест (Legacy), пока пользователь не введет первые три или четыре символа, чтобы ваше приложение совершало меньше запросов. Например, если вы отправляете запросы Place Autocomplete (Legacy) для каждого символа после того, как пользователь ввел третий символ, то, если пользователь введет семь символов и выберет подсказку, для которой вы отправите один запрос Geocoding API, общая стоимость будет равна стоимости четырех запросов Place Autocomplete (Legacy) Per Request и одного запроса Geocoding API1.
Если при откладывании запросов среднее число автоматизированных запросов станет меньше четырех, вы сможете эффективно использовать сервис автозаполнения мест (Legacy) с Geocoding API. Обратите внимание, что пользователь, ожидающий появления подсказок с каждым введенным символом, может принять откладывание запросов за задержку.
Вы можете применить рекомендации по оптимизации эффективности, чтобы помочь пользователям получать нужные подсказки, вводя меньше символов.
-
Цены указаны в прейскурантах платформы Google Карт.
Рекомендации по повышению эффективности
В рекомендациях ниже описаны способы оптимизации производительности автозаполнения мест (Legacy):
- Добавьте в свою реализацию Place Autocomplete (Legacy) ограничения по стране, предпочтение местоположений и (для программных реализаций) предпочитаемый язык. Предпочитаемый язык не нужен в случае виджетов, потому что для них язык определяется на основе языковых настроек браузера или мобильного устройства.
- Если вместе с автозаполнением мест (Legacy) отображается карта, вы можете сделать предпочитаемым местоположением видимую область карты.
- Если пользователь не выберет ни одну из подсказок автозаполнения мест (Legacy) – чаще всего такое бывает, если ни одна из них не соответствует искомому адресу, — вы можете повторно использовать изначально введенные пользователем данные, чтобы получить более подходящие результаты:
- Если вы рассчитываете, что пользователь будет вводить только информацию об адресе, повторно используйте изначально введенные им данные в вызове Geocoding API.
- Если пользователь скорее всего будет вводить запросы для определенного места по названию или адресу, используйте запрос информации о местах (устаревший). Если ожидается, что результаты будут из определенного региона, используйте предпочтение местоположений.
- Пользователи вводят адреса, содержащие номер квартиры или офиса. Так, для адреса в Чехии "Stroupežnického 3191/17, Praha" автозаполнение мест (устаревшее) покажет частичную подсказку.
- Пользователь вводит адрес с префиксом для ряда домов, например "23-30 29th St, Queens" в Нью-Йорке или "47-380 Kamehameha Hwy, Kaneohe" на острове Кауаи (Гавайи).
Приоритет местоположения
Настроить предпочтение результатов из определенной области с помощью параметров location и radius. Это указывает автозаполнению мест (Legacy) предпочитать результаты в пределах заданной области. однако более отдаленные точки также могут быть включены в ответ. С помощью параметра includedRegionCodes можно отфильтровать результаты, чтобы в них показывались только места в указанной стране.
Ограничение местоположений
Ограничить результаты определенной областью, передав параметр locationRestriction.
Вы также можете ограничить результаты регионом, заданным параметрами location и radius, добавив параметр strictbounds. В этом случае автозаполнение мест (устаревшее) будет возвращать результаты только из указанного региона.