Введение
Текстовый поиск (новый) возвращает информацию о наборе мест по заданной строке (например, «пицца в Нью-Йорке», «обувные магазины рядом с Оттавой» или «123 Мэйн-стрит»). Сервис возвращает список мест, соответствующих текстовой строке, с учётом заданного смещения местоположения.
Помимо обязательных параметров , текстовый поиск (новый) поддерживает уточнение запросов с использованием необязательных параметров для получения лучших результатов.
API Explorer позволяет вам делать живые запросы, чтобы вы могли ознакомиться с API и его параметрами:
Запросы на поиск текста (новые)
Запрос на текстовый поиск (новый) — это HTTP-запрос POST следующей формы:
https://places.googleapis.com/v1/places:searchText
Передайте все параметры в теле JSON-запроса или в заголовках как часть POST-запроса. Например:
curl -X POST -d '{ "textQuery" : "Spicy Vegetarian Food in Sydney, Australia" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel' \ 'https://places.googleapis.com/v1/places:searchText'
Ответы на текстовый поиск (новые)
Текстовый поиск (новый) возвращает JSON-объект в качестве ответа . В ответе:
- Массив
places
содержит все соответствующие места. - Каждое место в массиве представлено объектом
Place
. ОбъектPlace
содержит подробную информацию об этом месте. - FieldMask , переданный в запросе, определяет список полей, возвращаемых в объекте
Place
.
Полный объект JSON имеет следующий вид:
{ "places": [ { object (Place) } ] }
Обязательные параметры
FieldMask
Укажите список полей, возвращаемых в ответе, создав маску поля ответа . Передайте маску поля ответа методу с помощью параметра URL
$fields
илиfields
или с помощью HTTP-заголовкаX-Goog-FieldMask
. В ответе нет списка возвращаемых полей по умолчанию. Если маска поля не указана, метод вернёт ошибку.Маскирование полей — это хорошая практика проектирования, которая гарантирует, что вы не запрашиваете ненужные данные, что помогает избежать ненужного времени обработки и расходов на выставление счетов.
Укажите список типов данных о месте, разделённых запятыми, которые необходимо вернуть. Например, чтобы получить отображаемое название и адрес места.
X-Goog-FieldMask: places.displayName,places.formattedAddress
Используйте
*
для извлечения всех полей.X-Goog-FieldMask: *
Укажите одно или несколько из следующих полей:
Следующие поля активируют идентификатор Text Search Essentials Only SKU :
places.attributions
places.id
places.name
*
nextPageToken
* Поле
places.name
содержит название ресурса места в формате:places/ PLACE_ID
. Для доступа к текстовому названию места используйтеplaces.displayName
в Pro SKU.Следующие поля активируют Text Search Pro SKU :
places.accessibilityOptions
places.addressComponents
places.addressDescriptor
*
places.adrFormatAddress
places.businessStatus
places.containingPlaces
places.displayName
places.formattedAddress
places.googleMapsLinks
**
places.googleMapsUri
places.iconBackgroundColor
places.iconMaskBaseUri
places.location
places.photos
places.plusCode
places.postalAddress
places.primaryType
places.primaryTypeDisplayName
places.pureServiceAreaBusiness
places.shortFormattedAddress
places.subDestinations
places.types
places.utcOffsetMinutes
places.viewport
* Адресные дескрипторы, как правило, доступны для клиентов в Индии и являются экспериментальными в других местах.
** Полеplaces.googleMapsLinks
находится на этапе предварительной версии GA, и за его использование не взимается плата (то есть плата составляет 0 долларов США) в течение периода предварительной версии.Следующие поля активируют Text Search Enterprise SKU :
places.currentOpeningHours
places.currentSecondaryOpeningHours
places.internationalPhoneNumber
places.nationalPhoneNumber
places.priceLevel
places.priceRange
places.rating
places.regularOpeningHours
places.regularSecondaryOpeningHours
places.userRatingCount
places.websiteUri
Следующие поля активируют текстовый поиск Enterprise + Atmosphere SKU :
places.allowsDogs
places.curbsidePickup
places.delivery
places.dineIn
places.editorialSummary
places.evChargeAmenitySummary
places.evChargeOptions
places.fuelOptions
places.generativeSummary
places.goodForChildren
places.goodForGroups
places.goodForWatchingSports
places.liveMusic
places.menuForChildren
places.neighborhoodSummary
places.parkingOptions
places.paymentOptions
places.outdoorSeating
places.reservable
places.restroom
places.reviews
places.reviewSummary
places.routingSummaries
*
places.servesBeer
places.servesBreakfast
places.servesBrunch
places.servesCocktails
places.servesCoffee
places.servesDessert
places.servesDinner
places.servesLunch
places.servesVegetarianFood
places.servesWine
places.takeout
* Только текстовый поиск и поиск поблизости
текстовый запрос
Текстовая строка для поиска, например: «ресторан», «123 Мэйн-стрит» или «лучшее место для посещения в Сан-Франциско». API возвращает возможные совпадения на основе этой строки и упорядочивает результаты по степени их релевантности.
Необязательные параметры
включенныйТип
Смещает результаты в места, соответствующие указанному типу, заданному в Таблице A. Можно указать только один тип. Например:
-
"includedType":"bar"
-
"includedType":"pharmacy"
Текстовый поиск (новый) применяет фильтрацию по типу к определённым запросам в зависимости от их применимости. Например, фильтрация по типу может не применяться к запросам по конкретным адресам («123 Main Street»), но фильтрация по типу почти всегда применяется к категориальным запросам («магазины поблизости» или «торговые центры»).
Чтобы применить фильтрацию по типу ко всем запросам, установите для
strictTypeFiltering
значениеtrue
.-
includePureServiceAreaBusinesses
Если установлено значение
true
, ответ включает компании, которые посещают клиентов или доставляют им товары напрямую, но не имеют физического офиса. Если установлено значениеfalse
, API возвращает только компании с физическим офисом.код_языка
Язык, на котором будут возвращаться результаты.
- Ознакомьтесь со списком поддерживаемых языков . Google часто обновляет список поддерживаемых языков, поэтому этот список может быть неполным.
- Если
languageCode
не указан, API по умолчанию используетen
. Если указан недопустимый код языка, API возвращает ошибкуINVALID_ARGUMENT
. - API делает всё возможное, чтобы предоставить адрес, понятный как пользователю, так и местным жителям. Для этого он возвращает адреса на местном языке, при необходимости транслитерируя их в удобный для пользователя язык с учётом выбранного языка. Все остальные адреса возвращаются на выбранном языке. Все компоненты адреса возвращаются на одном языке, выбранном из первого компонента.
- Если имя недоступно на предпочитаемом языке, API использует наиболее близкое совпадение.
- Предпочтительный язык оказывает небольшое влияние на набор результатов, возвращаемых API, и порядок их возврата. Геокодер интерпретирует сокращения по-разному в зависимости от языка, например, сокращения для типов улиц или синонимы, которые могут быть корректны в одном языке, но некорректны в другом.
locationBias
Указывает область поиска. Это местоположение служит смещением, что означает, что могут быть возвращены результаты, близкие к указанному местоположению, включая результаты за пределами указанной области.
Можно указать
locationRestriction
илиlocationBias
, но не оба одновременно.locationRestriction
задаёт регион, в пределах которого должны находиться результаты, аlocationBias
регион, в пределах которого результаты, скорее всего, будут находиться или вблизи него, но могут быть и за его пределами.Укажите область как прямоугольную область просмотра или как круг .
Окружность определяется точкой центра и радиусом в метрах. Радиус должен быть в диапазоне от 0,0 до 50000,0 включительно. Радиус по умолчанию равен 0,0. Например:
"locationBias": { "circle": { "center": { "latitude": 37.7937, "longitude": -122.3965 }, "radius": 500.0 } }
Прямоугольник — это область просмотра, представленная в виде двух диагонально противоположных точек: самой низкой и самой высокой. Самая низкая точка соответствует юго-западному углу прямоугольника, а самая высокая — северо-восточному.
Область просмотра считается замкнутой областью, то есть включает её границу. Диапазон широты должен быть от -90 до 90 градусов включительно, а диапазон долготы — от -180 до 180 градусов включительно.
- Если
low
=high
, то область просмотра состоит из этой единственной точки. - Если
low.longitude
>high.longitude
, диапазон долготы инвертируется (область просмотра пересекает линию долготы 180 градусов). - Если
low.longitude
= -180 градусов иhigh.longitude
= 180 градусов, область просмотра включает все долготы. - Если
low.longitude
= 180 градусов, аhigh.longitude
= -180 градусов, диапазон долготы пуст. - Если
low.latitude
>high.latitude
, диапазон широт пуст.
Оба поля (низкий и высокий) должны быть заполнены, и отображаемое поле не может быть пустым. Пустая область просмотра приводит к ошибке.
Например, эта область просмотра полностью охватывает Нью-Йорк:
"locationBias": { "rectangle": { "low": { "latitude": 40.477398, "longitude": -74.259087 }, "high": { "latitude": 40.91618, "longitude": -73.70018 } } }
- Если
МестоположениеОграничение
Указывает область поиска. Результаты за пределами указанной области не возвращаются.
Укажите область как прямоугольную область просмотра . Пример определения области просмотра см. в описании
locationBias
.Можно указать
locationRestriction
илиlocationBias
, но не оба одновременно.locationRestriction
задаёт регион, в пределах которого должны находиться результаты, аlocationBias
регион, в пределах которого результаты, скорее всего, будут находиться или вблизи него, но могут быть и за его пределами.maxResultCount (устарело)
Указывает количество результатов (от 1 до 20), отображаемых на странице. Например, если задать
maxResultCount
значение 5, на первой странице будет возвращено до 5 результатов. Если запрос может вернуть больше результатов, ответ будет включатьnextPageToken
, который можно передать в последующий запрос для доступа к следующей странице.evOptions
Определяет параметры для определения доступных разъемов для зарядки электромобилей (ЭМ) и скоростей зарядки.
Типы разъемов
Фильтрация по типу разъёма для зарядки электромобилей, доступного в месте. Места, не поддерживающие ни один из типов разъёмов, будут отфильтрованы. Поддерживаемые типы разъёмов для зарядки электромобилей включают комбинированные (переменного и постоянного тока), зарядные устройства Tesla, зарядные устройства, соответствующие стандартам GB/T (для быстрой зарядки электромобилей в Китае), и зарядные устройства от розетки. Подробнее см. в справочной документации.
- Чтобы отфильтровать результаты по определённому поддерживаемому разъёму , установите это значение для параметра
connectorTypes
. Например, чтобы найти разъёмы J1772 типа 1, установите дляconnectorTypes
значениеEV_CONNECTOR_TYPE_J1772
. - Чтобы отфильтровать результаты по неподдерживаемым разъемам, установите для параметра
connectorTypes
значениеEV_CONNECTOR_TYPE_OTHER
. - Чтобы отфильтровать результаты по любому типу разъема, представляющему собой настенную розетку, установите для
connectorTypes
значениеEV_CONNECTOR_TYPE_UNSPECIFIED_WALL_OUTLET
. - Чтобы отфильтровать результаты по любому типу соединителя, либо задайте
connectorTypes
значениеEV_CONNECTOR_TYPE_UNSPECIFIED
, либо не задавайте значение дляconnectorTypes
.
- Чтобы отфильтровать результаты по определённому поддерживаемому разъёму , установите это значение для параметра
МинимальнаяСкоростьЗарядкиКВт
Фильтрует места по минимальной скорости зарядки электромобилей в киловаттах (кВт). Любые места со скоростью зарядки ниже минимальной скорости будут отфильтрованы. Например, чтобы найти зарядные станции для электромобилей со скоростью зарядки не менее 10 кВт, установите для этого параметра значение «10».
минРейтинг
Ограничивает результаты только теми, чей средний рейтинг пользователей больше или равен этому пределу. Значения должны быть в диапазоне от 0,0 до 5,0 (включительно) с шагом 0,5. Например: 0, 0,5, 1,0, ... , 5,0 включительно. Значения округляются до ближайшего 0,5. Например, значение 0,6 исключает все результаты с рейтингом меньше 1,0.
открыть сейчас
Если
true
, возвращаются только те организации, которые открыты на момент отправки запроса. Еслиfalse
, возвращаются все организации независимо от их статуса. Если этому параметру задано значениеfalse
, возвращаются места, для которых не указаны часы работы в базе данных Google Адресов.размер страницы
Указывает количество результатов (от 1 до 20), отображаемых на странице. Например, если задать
pageSize
значение 5, на первой странице будет возвращено до 5 результатов. Если запрос может вернуть больше результатов, ответ будет включатьnextPageToken
, который можно передать в последующий запрос для доступа к следующей странице.pageToken
Указывает
nextPageToken
из тела ответа предыдущей страницы.уровни цен
Ограничьте поиск местами, отмеченными определёнными ценовыми уровнями. По умолчанию выбираются все ценовые уровни.
Уровень цен можно ожидать для мест следующих типов:
Места неподдерживаемых типов не будут включены в ответ, если указано
priceLevels
.Укажите массив из одного или нескольких значений, определенных
PriceLevel
.Например:
"priceLevels":["PRICE_LEVEL_INEXPENSIVE", "PRICE_LEVEL_MODERATE"]
rankPreference
Указывает, как ранжируются результаты в ответе на основе типа запроса:
- Для категориального запроса, например «Рестораны в Нью-Йорке», значение по умолчанию —
RELEVANCE
(ранжировать результаты по релевантности поиска). Вы можете установить дляrankPreference
RELEVANCE
илиDISTANCE
(ранжировать результаты по расстоянию). - Для некатегориального запроса, например «Маунтин-Вью, Калифорния», мы рекомендуем не задавать
rankPreference
.
- Для категориального запроса, например «Рестораны в Нью-Йорке», значение по умолчанию —
Код региона
Код региона, используемый для форматирования ответа, указывается как двухсимвольное значение кода CLDR . Этот параметр также может влиять на смещение результатов поиска. Значение по умолчанию отсутствует.
Если название страны в поле
formattedAddress
в ответе совпадает сregionCode
, код страны не включается вformattedAddress
. Этот параметр не влияет наadrFormatAddress
, который всегда включает название страны, если оно доступно, или наshortFormattedAddress
, который никогда его не включает.Большинство кодов CLDR идентичны кодам ISO 3166-1, за некоторыми заметными исключениями. Например, ccTLD Великобритании — «uk» (.co.uk), а код ISO 3166-1 — «gb» (технически обозначает «Соединённое Королевство Великобритании и Северной Ирландии»). Этот параметр может влиять на результаты в зависимости от применимого законодательства.
strictTypeFiltering
Используется с параметром
includedType
. Если задано значениеtrue
, возвращаются только места, соответствующие указанным типам, заданным параметромincludeType
. Если задано значение false (значение по умолчанию), ответ может содержать места, не соответствующие указанным типам.
Примеры текстового поиска (новые)
Найти место по строке запроса
В следующем примере показан текстовый поисковый запрос (новый) по запросу «Острая вегетарианская еда в Сиднее, Австралия»:
curl -X POST -d '{ "textQuery" : "Spicy Vegetarian Food in Sydney, Australia" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H 'X-Goog-FieldMask: places.displayName,places.formattedAddress' \ 'https://places.googleapis.com/v1/places:searchText'
Обратите внимание, что заголовок X-Goog-FieldMask
указывает, что ответ содержит следующие поля данных: places.displayName,places.formattedAddress
. В этом случае ответ будет иметь следующий вид:
{ "places": [ { "formattedAddress": "367 Pitt St, Sydney NSW 2000, Australia", "displayName": { "text": "Mother Chu's Vegetarian Kitchen", "languageCode": "en" } }, { "formattedAddress": "175 First Ave, Five Dock NSW 2046, Australia", "displayName": { "text": "Veggo Sizzle - Vegan & Vegetarian Restaurant, Five Dock, Sydney", "languageCode": "en" } }, { "formattedAddress": "29 King St, Sydney NSW 2000, Australia", "displayName": { "text": "Peace Harmony", "languageCode": "en" } }, ... ] }
Добавьте дополнительные типы данных в маску поля, чтобы получить дополнительную информацию. Например, добавьте places.types,places.websiteUri
, чтобы включить в ответ тип ресторана и веб-адрес:
curl -X POST -d '{ "textQuery" : "Spicy Vegetarian Food in Sydney, Australia" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.types,places.websiteUri' \ 'https://places.googleapis.com/v1/places:searchText'
Ответ теперь имеет вид:
{ "places": [ { "types": [ "vegetarian_restaurant", "vegan_restaurant", "chinese_restaurant", "restaurant", "food", "point_of_interest", "establishment" ], "formattedAddress": "367 Pitt St, Sydney NSW 2000, Australia", "websiteUri": "http://www.motherchusvegetarian.com.au/", "displayName": { "text": "Mother Chu's Vegetarian Kitchen", "languageCode": "en" } }, { "types": [ "vegan_restaurant", "thai_restaurant", "vegetarian_restaurant", "indian_restaurant", "italian_restaurant", "american_restaurant", "restaurant", "food", "point_of_interest", "establishment" ], "formattedAddress": "175 First Ave, Five Dock NSW 2046, Australia", "websiteUri": "http://www.veggosizzle.com.au/", "displayName": { "text": "Veggo Sizzle - Vegan & Vegetarian Restaurant, Five Dock, Sydney", "languageCode": "en" } }, ... ] }
Фильтровать места по уровню цен
Используйте параметр priceLevel
, чтобы отфильтровать результаты по ресторанам, определенным как недорогие или умеренно дорогие:
curl -X POST -d '{ "textQuery" : "Spicy Vegetarian Food in Sydney, Australia", "priceLevels":["PRICE_LEVEL_INEXPENSIVE", "PRICE_LEVEL_MODERATE"] }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H 'X-Goog-FieldMask: places.displayName,places.formattedAddress,places.priceLevel' \ 'https://places.googleapis.com/v1/places:searchText'
В этом примере также используется заголовок X-Goog-FieldMask
для добавления поля данных places.priceLevel
в ответ , чтобы он имел следующий вид:
{ "places": [ { "formattedAddress": "367 Pitt St, Sydney NSW 2000, Australia", "priceLevel": "PRICE_LEVEL_MODERATE", "displayName": { "text": "Mother Chu's Vegetarian Kitchen", "languageCode": "en" } }, { "formattedAddress": "115 King St, Newtown NSW 2042, Australia", "priceLevel": "PRICE_LEVEL_MODERATE", "displayName": { "text": "Green Mushroom", "languageCode": "en" } }, ... ] }
Добавьте дополнительные параметры для уточнения поиска, такие как includedType
, minRating
, rankPreference
, openNow
и другие параметры, описанные в разделе Необязательные параметры .
Ограничить поиск определенной областью
Используйте locationRestriction
или locationBias
, но не оба одновременно, чтобы ограничить поиск определённой областью. locationRestriction
определяет область, в пределах которой должны быть результаты, а locationBias
— область, к которой должны быть близки результаты, но которая может находиться за пределами этой области.
Ограничить область с помощью locationRestriction
Используйте параметр locationRestriction
, чтобы ограничить результаты запроса указанным регионом. В теле запроса укажите low
и high
значения широты и долготы, определяющие границу региона.
В следующем примере показан новый текстовый поисковый запрос по запросу «вегетарианская еда» в Нью-Йорке. Этот запрос возвращает только первые 10 результатов для открытых заведений.
curl -X POST -d '{ "textQuery" : "vegetarian food", "pageSize" : "10", "locationRestriction": { "rectangle": { "low": { "latitude": 40.477398, "longitude": -74.259087 }, "high": { "latitude": 40.91618, "longitude": -73.70018 } } } }' \ -H 'Content-Type: application/json' \ -H 'X-Goog-Api-Key: API_KEY' \ -H 'X-Goog-FieldMask: places.id,places.formattedAddress' \ 'https://places.googleapis.com/v1/places:searchText'
Смещение в сторону области с использованием locationBias
В следующем примере показан новый текстовый поисковый запрос по запросу «вегетарианская еда», ориентированный на местоположение в пределах 500 метров от точки в центре Сан-Франциско. Этот запрос возвращает только первые 10 результатов для открытых заведений.
curl -X POST -d '{ "textQuery" : "vegetarian food", "openNow": true, "pageSize": 10, "locationBias": { "circle": { "center": {"latitude": 37.7937, "longitude": -122.3965}, "radius": 500.0 } }, }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H 'X-Goog-FieldMask: places.displayName,places.formattedAddress' \ 'https://places.googleapis.com/v1/places:searchText'
Поиск зарядных устройств для электромобилей с минимальной скоростью зарядки
Используйте minimumChargingRateKw
и connectorTypes
для поиска мест с доступными зарядными устройствами, совместимыми с вашим электромобилем.
В следующем примере показан запрос на зарядные разъёмы Tesla и J1772 тип 1 для электромобилей с минимальной мощностью зарядки 10 кВт в Маунтин-Вью, Калифорния. Возвращено только четыре результата.
curl -X POST -d '{ "textQuery": "EV Charging Station Mountain View", "pageSize": 4, "evOptions": { "minimumChargingRateKw": 10, "connectorTypes": ["EV_CONNECTOR_TYPE_J1772","EV_CONNECTOR_TYPE_TESLA"] } }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H "X-Goog-FieldMask: places.displayName,places.evChargeOptions" \ 'https://places.googleapis.com/v1/places:searchText'
Запрос возвращает следующий ответ:
{ "places": [ { "displayName": { "text": "EVgo Charging Station", "languageCode": "en" }, "evChargeOptions": { "connectorCount": 16, "connectorAggregation": [ { "type": "EV_CONNECTOR_TYPE_CHADEMO", "maxChargeRateKw": 100, "count": 8, "availableCount": 5, "outOfServiceCount": 0, "availabilityLastUpdateTime": "2024-01-10T19:10:00Z" }, { "type": "EV_CONNECTOR_TYPE_CCS_COMBO_1", "maxChargeRateKw": 100, "count": 2, "availableCount": 2, "outOfServiceCount": 0, "availabilityLastUpdateTime": "2024-01-10T19:10:00Z" }, { "type": "EV_CONNECTOR_TYPE_CCS_COMBO_1", "maxChargeRateKw": 350, "count": 6, "availableCount": 3, "outOfServiceCount": 0, "availabilityLastUpdateTime": "2024-01-10T19:10:00Z" } ] } }, { "displayName": { "text": "EVgo Charging Station", "languageCode": "en" }, "evChargeOptions": { "connectorCount": 6, "connectorAggregation": [ { "type": "EV_CONNECTOR_TYPE_CCS_COMBO_1", "maxChargeRateKw": 100, "count": 4, "availableCount": 3, "outOfServiceCount": 0, "availabilityLastUpdateTime": "2024-01-10T19:10:00Z" }, { "type": "EV_CONNECTOR_TYPE_CCS_COMBO_1", "maxChargeRateKw": 350, "count": 2, "availableCount": 0, "outOfServiceCount": 2, "availabilityLastUpdateTime": "2024-01-10T19:10:00Z" } ] } }, { "displayName": { "text": "EVgo Charging Station", "languageCode": "en" }, "evChargeOptions": { "connectorCount": 5, "connectorAggregation": [ { "type": "EV_CONNECTOR_TYPE_J1772", "maxChargeRateKw": 3.5999999046325684, "count": 1, "availableCount": 0, "outOfServiceCount": 1, "availabilityLastUpdateTime": "2024-01-10T19:10:00Z" }, { "type": "EV_CONNECTOR_TYPE_CHADEMO", "maxChargeRateKw": 50, "count": 2, "availableCount": 0, "outOfServiceCount": 0, "availabilityLastUpdateTime": "2024-01-10T19:10:00Z" }, { "type": "EV_CONNECTOR_TYPE_CCS_COMBO_1", "maxChargeRateKw": 50, "count": 2, "availableCount": 0, "outOfServiceCount": 0, "availabilityLastUpdateTime": "2024-01-10T19:10:00Z" } ] } }, { "displayName": { "text": "Electric Vehicle Charging Station", "languageCode": "en" }, "evChargeOptions": { "connectorCount": 10, "connectorAggregation": [ { "type": "EV_CONNECTOR_TYPE_OTHER", "maxChargeRateKw": 210, "count": 10 } ] } } ] }
Поиск предприятий в зоне обслуживания
Используйте параметр includePureServiceAreaBusinesses
для поиска предприятий без физического адреса обслуживания (например, мобильная клининговая служба или фургон с едой).
В следующем примере показан запрос на сантехников в Сан-Франциско:
curl -X POST -d '{ "textQuery" : "plumber San Francisco", "includePureServiceAreaBusinesses": true }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H 'X-Goog-FieldMask: places.displayName,places.formattedAddress' \ 'https://places.googleapis.com/v1/places:searchText'
Компании, не имеющие физического адреса обслуживания, не включают в свой ответ поле formattedAddress
:
{ "places": [ { "formattedAddress": "3450 Sacramento St #204, San Francisco, CA 94118, USA", "displayName": { "text": "Advanced Plumbing & Drain", "languageCode": "en" } }, { "formattedAddress": "1455 Bancroft Ave, San Francisco, CA 94124, USA", "displayName": { "text": "Magic Plumbing Heating & Cooling", "languageCode": "en" } }, /.../ { "displayName": { "text": "Starboy Plumbing Inc.", "languageCode": "en" } }, { "formattedAddress": "78 Dorman Ave, San Francisco, CA 94124, USA", "displayName": { "text": "Cabrillo Plumbing, Heating & Air", "languageCode": "en" } }, { "formattedAddress": "540 Barneveld Ave # D, San Francisco, CA 94124, USA", "displayName": { "text": "Mr. Rooter Plumbing of San Francisco", "languageCode": "en" } }, /.../ { "displayName": { "text": "Pipeline Plumbing", "languageCode": "en" } }, { "formattedAddress": "350 Bay St #100-178, San Francisco, CA 94133, USA", "displayName": { "text": "One Source Plumbing and Rooter", "languageCode": "en" } }, /.../ ] }
Укажите количество результатов, которые нужно вернуть на страницу.
Параметр pageSize
позволяет указать количество результатов, возвращаемых на странице. Параметр nextPageToken
в теле ответа предоставляет токен, который можно использовать в последующих вызовах для доступа к следующей странице результатов.
В следующем примере показан запрос «пицца в Нью-Йорке», ограниченный 5 результатами на страницу:
curl -X POST -d '{ "textQuery": "pizza in New York", "pageSize": 5 }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H "X-Goog-FieldMask: places.id,nextPageToken" \ 'https://places.googleapis.com/v1/places:searchText'
{ "places": [ { "id": "ChIJifIePKtZwokRVZ-UdRGkZzs" }, { "id": "ChIJPxPd_P1YwokRfzLhSiACEoU" }, { "id": "ChIJrXXKn5NZwokR78g0ipCnY60" }, { "id": "ChIJ6ySICVZYwokR9rIK8HjXhzE" }, { "id": "ChIJ6xvs94VZwokRnT1D2lX2OTw" } ], "nextPageToken": "AeCrKXsZWzNVbPzO-MRWPu52jWO_Xx8aKwOQ69_Je3DxRpfdjClq8Ekwh3UcF2h2Jn75kL6PtWLGV4ecQri-GEUKN_OFpJkdVc-JL4Q" }
Чтобы получить доступ к следующей странице результатов, используйте pageToken
для передачи nextPageToken
в теле запроса:
curl -X POST -d '{ "textQuery": "pizza in New York", "pageSize": 5, "pageToken": "AeCrKXsZWzNVbPzO-MRWPu52jWO_Xx8aKwOQ69_Je3DxRpfdjClq8Ekwh3UcF2h2Jn75kL6PtWLGV4ecQri-GEUKN_OFpJkdVc-JL4Q" }' \ -H 'Content-Type: application/json' -H 'X-Goog-Api-Key: API_KEY' \ -H "X-Goog-FieldMask: places.id,nextPageToken" \ 'https://places.googleapis.com/v1/places:searchText'
{ "places": [ { "id": "ChIJL-LN1N1ZwokR8K2jACu6Ydw" }, { "id": "ChIJjaD94kFZwokR-20CXqlpy_4" }, { "id": "ChIJ6ffdpJNZwokRmcafdROM5q0" }, { "id": "ChIJ8Q2WSpJZwokRQz-bYYgEskM" }, { "id": "ChIJ8164qwFZwokRhplkmhvq1uE" } ], "nextPageToken": "AeCrKXvPd6uUy-oj96W2OaqEe2pUD8QTxOM8-sKfUcFsC9t2Wey5qivrKGoGSxcZnyc7RPmaFfAktslrKbUh31ZDTkL0upRmaxA7c_c" }
Получить дескрипторы адресов
Дескрипторы адресов предоставляют реляционную информацию о местоположении места, включая близлежащие достопримечательности и охватываемые территории.
В следующем примере показан запрос на поиск по тексту (новый) для мест рядом с торговым центром в Сан-Хосе. В этом примере addressDescriptors
добавляется в маску поля:
curl -X POST -d '{ "textQuery": "clothes", "maxResultCount": 5, "locationBias": { "circle": { "center": { "latitude": 37.321328, "longitude": -121.946275 } } }, "rankPreference":"RANK_PREFERENCE_UNSPECIFIED" }' \ -H 'Content-Type: application/json' \ -H "X-Goog-Api-Key: API_KEY" \ -H "X-Goog-FieldMask: places.displayName,places.addressDescriptor" \ https://places.googleapis.com/v1/places:searchText
Ответ включает место, указанное в запросе, список близлежащих ориентиров и их расстояние от места, а также список территорий и их отношение к месту:
{ "places": [ { "displayName": { "text": "Urban Outfitters", "languageCode": "en" }, "addressDescriptor": { "landmarks": [ { "name": "places/ChIJVVVVUB7Lj4ARXyb4HFVDV8s", "placeId": "ChIJVVVVUB7Lj4ARXyb4HFVDV8s", "displayName": { "text": "Westfield Valley Fair", "languageCode": "en" }, "types": [ "clothing_store", "department_store", "establishment", "food", "movie_theater", "point_of_interest", "restaurant", "shoe_store", "shopping_mall", "store" ], "spatialRelationship": "WITHIN", "straightLineDistanceMeters": 133.72855 }, { "name": "places/ChIJ62_oCR7Lj4AR_MGWkSPotD4", "placeId": "ChIJ62_oCR7Lj4AR_MGWkSPotD4", "displayName": { "text": "Nordstrom", "languageCode": "en" }, "types": [ "clothing_store", "department_store", "establishment", "point_of_interest", "shoe_store", "store" ], "straightLineDistanceMeters": 250.99161 }, { "name": "places/ChIJ8WvuSB7Lj4ARFyHppkxDRQ4", "placeId": "ChIJ8WvuSB7Lj4ARFyHppkxDRQ4", "displayName": { "text": "Macy's", "languageCode": "en" }, "types": [ "clothing_store", "department_store", "establishment", "point_of_interest", "store" ], "straightLineDistanceMeters": 116.24196 }, { "name": "places/ChIJ9d3plB_Lj4ARzyaU5bn80WY", "placeId": "ChIJ9d3plB_Lj4ARzyaU5bn80WY", "displayName": { "text": "Bank of America Financial Center", "languageCode": "en" }, "types": [ "bank", "establishment", "finance", "point_of_interest" ], "straightLineDistanceMeters": 121.61515 }, { "name": "places/ChIJaXCjxvXLj4ARCPmQpvJ52Lw", "placeId": "ChIJaXCjxvXLj4ARCPmQpvJ52Lw", "displayName": { "text": "Bloomingdale's", "languageCode": "en" }, "types": [ "clothing_store", "department_store", "establishment", "furniture_store", "home_goods_store", "point_of_interest", "shoe_store", "store" ], "straightLineDistanceMeters": 81.32396 } ], "areas": [ { "name": "places/ChIJb3F-EB7Lj4ARnHApQ_Hu1gI", "placeId": "ChIJb3F-EB7Lj4ARnHApQ_Hu1gI", "displayName": { "text": "Westfield Valley Fair", "languageCode": "en" }, "containment": "WITHIN" }, { "name": "places/ChIJXYuykB_Lj4AR1Ot8nU5q26Q", "placeId": "ChIJXYuykB_Lj4AR1Ot8nU5q26Q", "displayName": { "text": "Valley Fair", "languageCode": "en" }, "containment": "WITHIN" }, { "name": "places/ChIJtYoUX2DLj4ARKoKOb1G0CpM", "placeId": "ChIJtYoUX2DLj4ARKoKOb1G0CpM", "displayName": { "text": "Central San Jose", "languageCode": "en" }, "containment": "WITHIN" } ] } }, /.../ ] }
Попробуйте!
API Explorer позволяет вам делать образцы запросов, чтобы вы могли ознакомиться с API и его параметрами.
Выберите значок API api на правой стороне страницы.
При желании отредактируйте параметры запроса.
Нажмите кнопку «Выполнить» . В диалоговом окне выберите учётную запись, которую вы хотите использовать для отправки запроса.
На панели обозревателя API выберите значок полноэкранного режима, чтобы развернуть окно обозревателя API.