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

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

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

Введение

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

Служба особенно полезна для создания неоднозначных адресных запросов в автоматизированной системе, и неадресные компоненты строки могут соответствовать как компаниям, так и адресам. Примерами неоднозначных адресных запросов являются плохо отформатированные адреса или запросы, которые включают неадресные компоненты, такие как названия компаний. Запросы, подобные первым двум примерам в следующей таблице, могут возвращать нулевые результаты, если не задано местоположение — например, регион, ограничение местоположения или смещение местоположения.

«10 Хай-стрит, Великобритания» или «123 Мэйн-стрит, США» Несколько "High Street" в Великобритании; несколько "Main Street" в США. Запрос не возвращает желаемых результатов, если не установлено ограничение местоположения.
«ChainRestaurant Нью-Йорк» Несколько точек «ChainRestaurant» в Нью-Йорке; без почтового адреса или даже названия улицы.
«10 High Street, Escher UK» или «123 Main Street, Pleasanton US» Только одна «High Street» в британском городе Эшер; только одна «Main Street» в американском городе Плезантон, штат Калифорния.
«Уникальное название ресторана Нью-Йорк» Только одно заведение с таким названием находится в Нью-Йорке; для различения не требуется указывать почтовый адрес.
"пиццерии в Нью-Йорке" Этот запрос содержит ограничение по местоположению, а "пиццерии" — это четко определенный тип места. Он возвращает несколько результатов.
"+1 514-670-8700"

Этот запрос содержит номер телефона. Он возвращает несколько результатов для мест, связанных с этим номером телефона.

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 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 Main Street» или «лучшее место для посещения в Сан-Франциско». API возвращает совпадения кандидатов на основе этой строки и упорядочивает результаты на основе их предполагаемой релевантности.

Необязательные параметры

  • включеноТип

    Ограничивает результаты местами, соответствующими указанному типу, определенному Таблицей A. Можно указать только один тип. Например:

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

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

  • код языка

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

    • См. список поддерживаемых языков . Google часто обновляет список поддерживаемых языков, поэтому этот список может быть неполным.
    • Если languageCode не указан, API по умолчанию использует en . Если указать недопустимый код языка, API возвращает ошибку INVALID_ARGUMENT .
    • API делает все возможное, чтобы предоставить адрес, который будет понятен как пользователю, так и местным жителям. Для достижения этой цели он возвращает адрес на местном языке, транслитерированный в сценарий, понятный пользователю, если необходимо, с учетом предпочтительного языка. Все остальные адреса возвращаются на предпочтительном языке. Все компоненты адреса возвращаются на том же языке, который выбирается из первого компонента.
    • Если имя недоступно на предпочитаемом языке, API использует наиболее близкое соответствие.
    • Предпочтительный язык имеет небольшое влияние на набор результатов, которые API выбирает для возврата, и порядок, в котором они возвращаются. Геокодер интерпретирует сокращения по-разному в зависимости от языка, например, сокращения для типов улиц или синонимы, которые могут быть действительными в одном языке, но не в другом.
  • местоположениеПредвзятость

    Указывает область для поиска. Это местоположение служит смещением, что означает, что могут быть возвращены результаты вокруг указанного местоположения, включая результаты за пределами указанной области.

    Вы можете указать 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 , диапазон широт пуст.

      Оба поля low и high должны быть заполнены, и представленное поле не может быть пустым. Пустая область просмотра приводит к ошибке.

      Например, эта область просмотра полностью охватывает Нью-Йорк:

      "locationBias": {
        "rectangle": {
          "low": {
            "latitude": 40.477398,
            "longitude": -74.259087
          },
          "high": {
            "latitude": 40.91618,
            "longitude": -73.70018
          }
        }
      }
  • местоположениеОграничение

    Указывает область для поиска. Результаты за пределами указанной области не возвращаются.

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

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

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

  • pageToken

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

  • priceLevels

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

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

    Места неподдерживаемых типов не будут включены в ответ, если указано 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» (технически для субъекта «Соединенное Королевство Великобритании и Северной Ирландии»). Параметр может влиять на результаты в зависимости от применимого законодательства.

  • строгийТипФильтрация

    Используется с параметром 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 значения широты и долготы, которые определяют границу региона.

Следующий пример показывает запрос Text Search (New) для "вегетарианской еды" в Нью-Йорке. Этот запрос возвращает только первые 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

Следующий пример показывает запрос Text Search (New) для "вегетарианской еды", смещенный к местоположению в пределах 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"
}

Получить дескрипторы адреса

Адресные дескрипторы предоставляют реляционную информацию о местоположении места, включая близлежащие достопримечательности и охватываемые территории.

В следующем примере показан запрос Text Search (New) для мест около торгового центра в Сан-Хосе. В этом примере вы включаете 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.