Размещение фотографий позволяет добавлять на веб-страницы высококачественный фотографический контент. На этой странице объясняются различия между функциями фотографий мест в классе 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;