Идентификаторы мест

Выберите платформу: Android iOS JavaScript Веб-сервисы
Разработчики из Европейской экономической зоны (ЕЭЗ)

Введение

Идентификатор места однозначно идентифицирует его в базе данных Google Places и на Google Картах. Его можно использовать в следующих запросах к API Google Карт:

  • Получение адреса по идентификатору места в Geocoding API и сервисе Geocoding (Maps JavaScript API).
  • Указание пунктов отправления, назначения и промежуточных путевых точек в веб-сервисах Routes API и Directions API (устаревшая версия) и сервисе Directions (устаревшая версия Maps JavaScript API).
  • Указание пунктов отправления и назначения в веб-сервисах Routes API и Distance Matrix API (устаревшая версия) и сервисе Distance Matrix (устаревшая версия) (Maps JavaScript API).
  • Получение информации о месте в новом Places API, новом Places SDK для Android, новом Places SDK для iOS и библиотеке Places.
  • Использование параметров идентификатора места в Maps Embed API.
  • Извлечение поисковых запросов из URL Карт.
  • Показ ограничений скорости в Roads API.
  • Поиск и настройка стиля многоугольников, обозначающих административные границы, с помощью стилей на основе данных.

Как найти идентификатор места

Если вам нужно узнать идентификатор интересующего вас места, воспользуйтесь приведенной ниже строкой поиска.

Вы также можете ознакомиться со средством поиска идентификаторов мест и его программным кодом в документации по Maps JavaScript API.

Обзор

Идентификатор места – это уникальный текстовый идентификатор. Длина идентификатора может быть разной (максимальная длина идентификаторов мест не ограничена). Примеры:

  • ChIJgUbEo8cfqokR5lP9_Wh_DaM
  • GhIJQWDl0CIeQUARxks3icF8U8A
  • EicxMyBNYXJrZXQgU3QsIFdpbG1pbmd0b24sIE5DIDI4NDAxLCBVU0EiGhIYChQKEgnRTo6ixx-qiRHo_bbmkCm7ZRAN
  • EicxMyBNYXJrZXQgU3QsIFdpbG1pbmd0b24sIE5DIDI4NDAxLCBVU0E
  • IhoSGAoUChIJ0U6OoscfqokR6P225pApu2UQDQ

Идентификаторы мест есть у большинства объектов на карте, в том числе компаний, ориентиров, парков и перекрестков. Одному местоположению могут соответствовать несколько идентификаторов мест, а сами идентификаторы могут меняться со временем.

Один и тот же идентификатор места можно использовать и с Places API, и с рядом API платформы Google Карт. Places API, и с рядом других API платформы Google Карт, например Maps JavaScript API, Geocoding API, Maps Embed API и Roads API.

Как получить данные о месте по идентификатору

Чаще всего идентификатор места ищут с помощью Places API или библиотеки Places в Maps JavaScript API. Затем используйте полученный идентификатор места, чтобы получить информацию о нем. чтобы запрашивать и получать данные о месте в будущем. Подробнее о том, как сохранить идентификаторы мест для последующего использования…

Пример использования Places SDK для iOS

Идентификатор места – это уникальный текстовый идентификатор. В Places SDK для iOS можно получить идентификатор места из объекта GMSPlace. Вы можете сохранить идентификатор места и использовать его для повторного получения объекта GMSPlace позже.

Чтобы получить место по идентификатору, вызовите GMSPlacesClient fetchPlaceFromPlaceID:, передав следующие параметры:

  • Строка, содержащая идентификатор места.
  • Один или несколько параметров GMSPlaceField, в которых указаны типы данных, которые нужно вернуть.
  • Токен сеанса, если вызов выполняется для завершения запроса автозаполнения. В противном случае передайте nil.
  • GMSPlaceResultCallback для обработки результата.

API вызывает указанный метод обратного вызова, передавая объект GMSPlace. Если место не найдено, объект будет иметь нулевое значение.

Places Swift SDK для iOS

// Initialize Places Swift Client.
let placesClient = PlacesClient.shared

// A hotel in Saigon with an attribution
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"
    
// Fetch Place Request.
let fetchPlaceRequest = FetchPlaceRequest(
  placeID: placeID,
  placeProperties: [.displayName]
)
    
Task {
  switch await placesClient.fetchPlace(with: fetchPlaceRequest) {
  case .success(let place):
    print("The selected place is: \(place.displayName): \(String(describing: place.description))")
  case .failure(let placesError):
    print("Place not found: \(placeID); \(placesError)")
  }
}

Swift

// A hotel in Saigon with an attribution.
let placeID = "ChIJV4k8_9UodTERU5KXbkYpSYs"

// Specify the place data types to return.
let fields: GMSPlaceField = GMSPlaceField(rawValue: UInt(GMSPlaceField.name.rawValue) |
  UInt(GMSPlaceField.placeID.rawValue))!

placesClient?.fetchPlace(fromPlaceID: placeID, placeFields: fields, sessionToken: nil, callback: {
  (place: GMSPlace?, error: Error?) in
  if let error = error {
    print("An error occurred: \(error.localizedDescription)")
    return
  }
  if let place = place {
    self.lblName?.text = place.name
    print("The selected place is: \(place.name)")
  }
})

Objective-C

// A hotel in Saigon with an attribution.
NSString *placeID = @"ChIJV4k8_9UodTERU5KXbkYpSYs";

// Specify the place data types to return.
GMSPlaceField fields = (GMSPlaceFieldName | GMSPlaceFieldPlaceID);

[_placesClient fetchPlaceFromPlaceID:placeID placeFields:fields sessionToken:nil callback:^(GMSPlace * _Nullable place, NSError * _Nullable error) {
  if (error != nil) {
    NSLog(@"An error occurred %@", [error localizedDescription]);
    return;
  }
  if (place != nil) {
    NSLog(@"The selected place is: %@", [place name]);
  }
}];

Как сохранять идентификаторы мест для последующего использования

На идентификаторы мест не распространяются ограничения по кешированию, указанные в пункте 3.2.3(b) Условий использования платформы Google Карт. Поэтому их можно хранить для последующего использования.

Обновление сохраненных идентификаторов мест

Поскольку идентификаторы мест могут меняться в результате обновления базы данных Google Карт, мы рекомендуем обновлять идентификаторы мест, если они хранятся более 12 месяцев. Вы можете обновить идентификаторы мест бесплатно, отправив запрос информации о местах и указав только поле GMSPlaceFieldPlaceID в параметре fields.

Этот вызов активирует SKU информация о местах – ID Refresh.

Коды ошибок при использовании идентификаторов мест

INVALID_REQUEST

Код статуса INVALID_REQUEST означает, что указанный идентификатор места недействителен. Вы можете получить код INVALID_REQUEST, если идентификатор места был обрезан или изменен другим способом и его значение стало недействительным.

NOT_FOUND

Код статуса NOT_FOUND означает, что указанный идентификатор места устарел. Так происходит, если организация закрывается или ее адрес меняется. Также это может быть результатом обновления идентификаторов мест в базе данных Google Карт (место получает новый идентификатор, и поэтому запрос со старым возвращает ответ NOT_FOUND).

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

Некоторые идентификаторы мест при запросах к API могут возвращать ответ NOT_FOUND или другой идентификатор. К таким относятся:

  • Почтовые адреса, для которых нет точных совпадений в базе данных Google Карт и которые выводятся по аналогии со схожими адресами.
  • Отрезки длинного маршрута, в запросе которого указан город или другой населенный пункт.
  • Перекрестки.
  • Места с компонентом адреса типа subpremise.

Такие идентификаторы часто принимают форму длинной строки (длина идентификатора места не ограничена). Пример:

EpID4LC14LC_4LCo4LCv4LGN4LCo4LCX4LCw4LGNIC0g4LC44LGI4LCm4LGN4LCs4LC-4LCm4LGNIOCwsOCxi-CwoeCxjeCwoeCxgSAmIOCwteCwv-CwqOCwr-CxjSDgsKjgsJfgsLDgsY0g4LCu4LGG4LCv4LC_4LCo4LGNIOCwsOCxi-CwoeCxjeCwoeCxgSwg4LC14LC_4LCo4LCv4LGNIOCwqOCwl-CwsOCxjSDgsJXgsL7gsLLgsKjgsYAsIOCwsuCwleCxjeCwt-CxjeCwruCwv-CwqOCwl-CwsOCxjSDgsJXgsL7gsLLgsKjgsYAsIOCwuOCwsOCxguCwsOCxjSDgsKjgsJfgsLDgsY0g4LC14LGG4LC44LGN4LCf4LGNLCDgsLjgsK_gsYDgsKbgsL7gsKzgsL7gsKbgsY0sIOCwueCxiOCwpuCwsOCwvuCwrOCwvuCwpuCxjSwg4LCk4LGG4LCy4LCC4LCX4LC-4LCjIDUwMDA1OSwg4LCt4LC-4LCw4LCk4LCm4LGH4LC24LCCImYiZAoUChIJ31l5uGWYyzsR9zY2qk9lDiASFAoSCd9ZebhlmMs7Efc2NqpPZQ4gGhQKEglDz61OZpjLOxHgDJCFY-o1qBoUChIJi37TW2-YyzsRr_uv50r7tdEiCg1MwFcKFS_dyy4