Перенести фотографии нового места,Перенести фотографии нового места,Перенести фотографии нового места,Перенести фотографии нового места,Перенести фотографии нового места

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

  • PlacesService (устаревшая версия) возвращает массив, содержащий до 10 объектов PlacePhoto как часть объекта PlaceResult для любого запроса getDetails() , если в запросе указано поле photos . В случае textSearch() и nearbySearch() по умолчанию возвращается фотография, занявшая первое место, если она доступна.
  • Класс Place возвращает массив, содержащий до 10 объектов Photo , как часть запроса fetchFields() если в запросе указано поле photos .

В следующей таблице перечислены некоторые основные различия в использовании фотографий мест между классами Place и PlacesService :

PlacesService (устаревшая версия) Place (Новое)
Интерфейс PlacePhoto Photo
PlacePhoto возвращает html_attributions в виде строки. Photo возвращает экземпляр AuthorAttribution .
Методы требуют использования обратного вызова для обработки объекта результатов и ответа google.maps.places.PlacesServiceStatus . Использует обещания и работает асинхронно.
Методы требуют проверки PlacesServiceStatus . Не требуется проверка статуса, можно использовать стандартную обработку ошибок.
PlacesService должен быть создан с использованием карты или элемента div. Place может быть создан где угодно, без ссылки на карту или элемент страницы.

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

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

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

В следующем фрагменте показано возвращение фотографий с помощью PlacesService и отображение первого результата фотографии на странице. В этом примере запрос сведений о месте указывает идентификатор места, а также поля name и photos . Первая фотография отображается на странице после проверки статуса услуги. При создании экземпляра PlacesService необходимо указать карту или элемент div ; поскольку в этом примере нет карты, используется элемент div .

function getPhotos() {
  // Construct the Place Details request.
  const request = {
    placeId: "ChIJydSuSkkUkFQRsqhB-cEtYnw",
    fields: ["name", "photos"],
  };

  // Create an instance of PlacesService.
  const attributionDiv = document.getElementById("attribution-div");
  const service = new google.maps.places.PlacesService(attributionDiv);

  // Check status and display the first photo in an img element.
  service.getDetails(request, (place, status) => {
    if (
      status === google.maps.places.PlacesServiceStatus.OK && place
    ) {
      const photoImg = document.getElementById('image-container');
      photoImg.src = place.photos[0].getUrl({maxHeight: 400});
    }
  });
}

Атрибуция авторов в PlacesService

PlacesService возвращает необходимые сведения об авторстве в виде строки html_attributions содержащей URL-адрес, указывающий на страницу профиля автора в Google. В следующем фрагменте показано получение данных об атрибуции для первой фотографии.

let attributionUrl = place.photos[0].html_attributions;

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

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

В следующем фрагменте показано использование метода fetchFields() для возврата сведений о месте, включая отображаемое имя и фотографии места. Сначала создается экземпляр нового объекта Place с использованием идентификатора места, за которым следует вызов fetchFields() , где указываются поля displayName и photos . Фотография, занявшая первое место, отображается на странице. При использовании класса Place нет необходимости проверять статус службы, поскольку это выполняется автоматически.

async function getPhotos() {
  // Use a place ID to create a new Place instance.
  const place = new google.maps.places.Place({
      id: 'ChIJydSuSkkUkFQRsqhB-cEtYnw', // Woodland Park Zoo, Seattle WA
  });

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

  console.log(place.displayName);
  console.log(place.photos[0]);
  // Add the first photo to an img element.
  const photoImg = document.getElementById('image-container');
  photoImg.src = place.photos[0].getURI({maxHeight: 400});
}

Атрибуция авторов в классе Place

Класс Place возвращает сведения об авторе в виде экземпляра AuthorAttribution , включая имя автора, URI для страницы профиля Google автора и URI для фотографии профиля автора. В следующем фрагменте показано получение данных об атрибуции для первой фотографии.

let name = place.photos[0].authorAttributions[0].displayName;
let attributionUrl = place.photos[0].authorAttributions[0].uri;
let photoUrl = place.photos[0].authorAttributions[0].photoUri;

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