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

Выберите платформу: Android iOS JavaScript Веб-сервис

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

Введение

Функция текстового поиска (новая) возвращает информацию о наборе мест на основе строки (например, "пицца в Нью-Йорке", "обувные магазины рядом с Оттавой" или "Главная улица, 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 ID Only SKU :

      places.attributions
      places.id
      places.name *
      nextPageToken
      places.movedPlace
      places.movedPlaceId

      * Поле places.name содержит имя ресурса места в формате: places/ PLACE_ID . Используйте places.displayName в Pro SKU для доступа к текстовому имени места.

    • Следующие поля активируют артикул Text Search Pro :

      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.searchUri
      places.subDestinations
      places.timeZone
      places.types
      places.utcOffsetMinutes
      places.viewport

      * Адресные описания, как правило, доступны клиентам в Индии, а в других странах находятся на экспериментальной стадии.

    • Следующие поля запускают функцию текстового поиска 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
      routingSummaries *
      places.servesBeer
      places.servesBreakfast
      places.servesBrunch
      places.servesCocktails
      places.servesCoffee
      places.servesDessert
      places.servesDinner
      places.servesLunch
      places.servesVegetarianFood
      places.servesWine
      places.takeout

      * Только текстовый поиск и поиск поблизости
  • текстовый запрос

    Текстовая строка, по которой будет производиться поиск. Например, "restaurant", "123 Main Street" или "Best place to visit in San Francisco". API возвращает подходящие варианты на основе этой строки и упорядочивает результаты в зависимости от их предполагаемой релевантности.

    Функция текстового поиска (новая) не предназначена для неоднозначных запросов, включая следующие:

    тип запроса Пример
    Слишком много понятий или ограничений, например, названия нескольких мест, дорог или городов в одном запросе. «Маркет-стрит, Сан-Франциско, аэропорт Сан-Хосе»
    Элементы почтового адреса, не отображаемые на Google Maps. «Адрес: Джон Смит, Мейн-стрит, 123»
    "Адрес: 13, Сан-Франциско"
    Названия предприятий, сетей или категорий в сочетании с указанием мест, где эти организации недоступны. «Магазин Tesco недалеко от Далласа, штат Техас»
    Неоднозначные запросы с множественными интерпретациями "Сдача зарядного устройства"
    Исторические названия больше не используются. «Мидлсекс, Соединенное Королевство»
    Негеопространственные элементы или намерения «Сколько лодок находится в гавани Вентуры?»
    Неофициальные или самозваные названия «Дженга»
    "Хелтер Скелтер"
    Координаты широты и долготы "37.422131,-122.084801"

Дополнительные параметры

  • включенный тип

    Приводит к смещению результатов в сторону мест, соответствующих указанному типу, определенному в таблице А. Можно указать только один тип. Например:

    • "includedType":"bar"
    • "includedType":"pharmacy"

    В функции текстового поиска (новая функция) для определенных запросов применяется фильтрация по типу, в зависимости от области применения. Например, фильтрация по типу может не применяться к запросам, содержащим конкретные адреса («123 Main Street»), но она почти всегда применяется к запросам по категориям («магазины поблизости» или «торговые центры»).

    Чтобы применить фильтрацию по типу ко всем запросам, установите strictTypeFiltering в true .

  • includePureServiceAreaBusinesses

    Если установлено значение true , в ответ будут включены компании, которые посещают клиентов лично или осуществляют доставку, но не имеют физического местоположения. Если установлено значение false , API вернет только компании, имеющие физическое местоположение.

  • languageCode

    Язык, на котором будут возвращаться результаты.

    • См. список поддерживаемых языков . 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
          }
        }
      }
  • locationRestriction

    Указывает область поиска только по категориям , которая может возвращать несколько мест (например, «Рестораны в Нью-Йорке» или «Торговые центры»). Результаты за пределами указанной области не возвращаются.

    Укажите область в виде прямоугольной области просмотра . Пример определения области просмотра см. в описании параметра locationBias .

    Вы можете указать locationRestriction или locationBias , но не оба параметра одновременно. locationRestriction следует рассматривать как указание региона, в пределах которого должны находиться результаты, а locationBias как указание региона, внутри или рядом с которым результаты, скорее всего, будут находиться, но могут находиться за пределами указанной области.

  • maxResultCount (устарело)

    Указывает количество результатов (от 1 до 20), отображаемых на странице. Например, установка значения maxResultCount равного 5, вернет до 5 результатов на первой странице. Если запрос может вернуть больше результатов, ответ будет содержать nextPageToken , который можно передать в последующий запрос для доступа к следующей странице.

  • evOptions

    Задает параметры для определения доступных разъемов для зарядки электромобилей и скорости зарядки.

    • connectorTypes

      Фильтры по типу доступного разъема для зарядки электромобилей. Места, не поддерживающие ни один из типов разъемов, будут отфильтрованы. Поддерживаемые типы разъемов для зарядки электромобилей включают комбинированные (переменного и постоянного тока) зарядные устройства, зарядные устройства 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 Places.

  • размер страницы

    Указывает количество результатов (от 1 до 20), отображаемых на странице. Например, если установить значение pageSize равным 5, на первой странице будет отображаться до 5 результатов. Если запрос может вернуть больше результатов, ответ будет содержать nextPageToken , который можно передать в последующий запрос для доступа к следующей странице.

  • pageToken

    Указывает nextPageToken из тела ответа предыдущей страницы.

  • уровни цен

    Ограничьте поиск местами, отмеченными определенными ценовыми уровнями. По умолчанию выбраны все ценовые уровни.

    Уровень цен можно ожидать для мест следующих типов:

    Места неподдерживаемых типов не будут включены в ответ, если указан priceLevels .

    Укажите массив из одного или нескольких значений, определенных параметром PriceLevel .

    Например:

    "priceLevels":["PRICE_LEVEL_INEXPENSIVE", "PRICE_LEVEL_MODERATE"]
  • рангПредпочтение

    Указывает, как результаты ранжируются в ответе в зависимости от типа запроса:

    • Для категориального запроса, такого как «Рестораны в Нью-Йорке», значение по умолчанию — RELEVANCE (ранжировать результаты по релевантности поиска). Вы можете установить rankPreference на RELEVANCE или DISTANCE (ранжировать результаты по расстоянию).
    • Для некатегориальных запросов, таких как "Mountain View, CA", мы рекомендуем не задавать rankPreference .
  • regionCode

    Региональный код, используемый для форматирования ответа, указывается в виде двухсимвольного кода CLDR . Этот параметр также может влиять на результаты поиска. Значение по умолчанию отсутствует.

    Если название страны в поле formattedAddress в ответе совпадает с regionCode , код страны опускается в formattedAddress . Этот параметр не влияет на adrFormatAddress , который всегда включает название страны, если оно доступно, или на shortFormattedAddress , который никогда его не включает.

    Большинство кодов CLDR идентичны кодам ISO 3166-1, за некоторыми заметными исключениями. Например, национальный домен верхнего уровня Соединенного Королевства — «uk» (.co.uk), а его код ISO 3166-1 — «gb» (технически обозначающий «Соединенное Королевство Великобритании и Северной Ирландии»). Параметр может влиять на результаты в зависимости от применимого законодательства.

  • strictTypeFiltering

    Используется с параметром includedType . Если установлено значение true , возвращаются только места, соответствующие includedType типам. Если значение 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 в правой части страницы.

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

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

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