Новая версия текстового поиска

Выберите платформу: Android iOS JavaScript Web Service

Разработчики Европейской экономической зоны (ЕЭЗ)

Введение

Текстовый поиск (новый) возвращает информацию о наборе мест по заданной строке (например, «пицца в Нью-Йорке», «обувные магазины рядом с Оттавой» или «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 и его параметрами.

  1. Выберите значок API api на правой стороне страницы.

  2. При желании отредактируйте параметры запроса.

  3. Нажмите кнопку «Выполнить» . В диалоговом окне выберите учётную запись, которую вы хотите использовать для отправки запроса.

  4. На панели обозревателя API выберите значок полноэкранного режима, чтобы развернуть окно обозревателя API.