Перейти к новым сведениям о месте,Перейти к новым сведениям о месте,Перейти к новым сведениям о месте,Перейти к новым сведениям о месте

API Places может возвращать подробную информацию о конкретном месте. На этой странице объясняются различия между сведениями о месте, используемыми в классе Place (новом) и PlacesService (устаревшим), а также приводятся некоторые фрагменты кода для сравнения. В следующей таблице перечислены некоторые основные различия в использовании сведений о месте между классами Place и PlacesService :

PlacesService (устаревшая версия) Place (Новое)
getDetails() fetchFields()
PlaceDetailsRequest FetchFieldsRequest
Методы требуют использования обратного вызова для обработки объекта результатов и ответа google.maps.places.PlacesServiceStatus . Использует обещания и работает асинхронно.
Методы требуют проверки PlacesServiceStatus . Не требуется проверка статуса, можно использовать стандартную обработку ошибок.
Поля данных о месте отформатированы с использованием змеиного регистра. Поля данных о местах отформатированы с использованием верблюжьего регистра.
Ограничено фиксированным набором типов мест и полей данных о местах . Предоставляет расширенный выбор регулярно обновляемых типов мест и полей данных о местах .

Сравнение кода

В этом разделе сравниваются два похожих фрагмента кода, чтобы проиллюстрировать различия между службой Places и классом Place. Фрагменты кода показывают код, необходимый для каждого соответствующего API, чтобы выполнить запрос сведений о месте, а затем использовать полученные данные о месте для добавления маркера на карту.

Служба адресов (устаревшая версия)

В следующем сокращенном фрагменте кода показано выполнение запроса сведений о месте с помощью PlacesService . Запрос использует обратный вызов и включает обязательную условную проверку PlacesServiceStatus . Необходимые поля данных о месте указываются в теле запроса.

function getPlaceDetails() {
  // Instantiate the Places Service.
  const service = new google.maps.places.PlacesService(map);

  // Make a request using the Place ID.
  const request = {
    placeId: "ChIJN1t_tDeuEmsRUsoyG83frY4",
    fields: ["name", "formatted_address", "place_id", "geometry"],
  };

  // Request place details.
  service.getDetails(request, (place, status) => {
    // Check whether PlacesServiceStatus is OK.
    if (
      status === google.maps.places.PlacesServiceStatus.OK &&
      place &&
      place.geometry &&
      place.geometry.location
    ) {

      // Log the result.
      console.log(place.name);
      console.log(place.formatted_address);

      // Add a marker for the place.
      const marker = new google.maps.Marker({
        map,
        position: place.geometry.location,
        title: place.name,
      });
    }
  });
}

Узнать больше

Класс места (Новый)

В следующем сокращенном фрагменте кода показано выполнение запроса сведений о месте с использованием класса Place . Запрос является асинхронным и не включает проверку статуса (можно использовать стандартную обработку ошибок). Идентификатор места используется для создания нового экземпляра Place , который используется для выполнения запроса ( fetchFields() ). Необходимые поля данных о месте не передаются до тех пор, пока не будет вызвана fetchFields() , что обеспечивает большую гибкость. Поскольку метод fetchFields() использует оператор await, его можно использовать только внутри async функции.

async function getPlaceDetails() {
  // Use place ID to create a new Place instance.
  const place = new google.maps.places.Place({
    id: "ChIJN5Nz71W3j4ARhx5bwpTQEGg",
    requestedLanguage: "en", // optional
  });

  // Call fetchFields, passing the needed data fields.
  await place.fetchFields({
    fields: ["displayName", "formattedAddress", "location"],
  });

  // Log the result.
  console.log(place.displayName);
  console.log(place.formattedAddress);

  // Add an Advanced Marker.
  const marker = new google.maps.marker.AdvancedMarkerElement({
    map,
    position: place.location,
    title: place.displayName,
  });
}

Узнать больше