Yeni Yer Fotoğrafları'na taşıma

Avrupa Ekonomik Alanı'ndaki (AEA) geliştiriciler

Place Photos, web sayfalarınıza yüksek kaliteli fotoğraf içerikleri eklemenize olanak tanır. Bu sayfada, Place sınıfındaki (yeni) ve PlacesService (eski) yer fotoğrafları özellikleri arasındaki farklar açıklanmakta ve karşılaştırma için bazı kod snippet'leri sunulmaktadır.

  • PlacesService (eski), istekte photos alanı belirtilmişse herhangi bir getDetails() isteği için PlaceResult nesnesinin bir parçası olarak en fazla 10 PlacePhoto nesnesinden oluşan bir dizi döndürür. textSearch() ve nearbySearch() için, varsa ilk yer fotoğrafı varsayılan olarak döndürülür.
  • Place sınıfı, istekte photos alanı belirtilmişse fetchFields() isteğinin bir parçası olarak en fazla 10 Photo nesnesinden oluşan bir dizi döndürür.

Aşağıdaki tabloda, Place sınıfı ile PlacesService arasında yer fotoğraflarının kullanımıyla ilgili temel farklardan bazıları listelenmiştir:

PlacesService (Eski) Place (Yeni)
PlacePhoto arayüzü Photo sınıfı
PlacePhoto, html_attributions değerini dize olarak döndürür. Photo, bir AuthorAttribution örneği döndürür.
Yöntemler, sonuç nesnesini ve google.maps.places.PlacesServiceStatus yanıtını işlemek için bir geri çağırma işlevinin kullanılmasını gerektirir. Promise'leri kullanır ve eşzamansız olarak çalışır.
Yöntemler için PlacesServiceStatus kontrolü gerekir. Durum kontrolü gerekmez, standart hata işleme kullanılabilir. Daha fazla bilgi
PlacesService, bir harita veya div öğesi kullanılarak örneklendirilmelidir. Place, bir haritaya veya sayfa öğesine referans verilmeden, ihtiyaç duyulan her yerde örneklendirilebilir.

Kod karşılaştırması

Bu bölümde, Places hizmeti ile Place sınıfı arasındaki farkları göstermek için yer fotoğrafları ile ilgili kodlar karşılaştırılmaktadır. Kod snippet'leri, her bir API'de yer fotoğrafları istemek için gereken kodu gösterir.

Places hizmeti (eski)

Aşağıdaki snippet, PlacesService kullanarak fotoğrafların döndürülmesini ve sayfada ilk fotoğraf sonucunun gösterilmesini göstermektedir. Bu örnekte, yer ayrıntıları isteği, name ve photos alanlarıyla birlikte bir yer kimliği belirtir. Ardından, hizmet durumu kontrol edildikten sonra ilk fotoğraf sayfada gösterilir. PlacesService örneklendirilirken bir harita veya div öğesi belirtilmelidir. Bu örnekte harita bulunmadığından div öğesi kullanılmıştır.

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 içinde yazar atıfları

PlacesService, gerekli yazar ilişkilendirmelerini, yazarın Google profil sayfasına yönlendiren bir URL içeren html_attributions dizesi olarak döndürür. Aşağıdaki snippet, ilk fotoğraf sonucu için ilişkilendirme verilerinin alınmasını göstermektedir.

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

Daha fazla bilgi

Yer sınıfı (yeni)

Aşağıdaki snippet'te, görünen ad ve yer fotoğrafları dahil olmak üzere yer ayrıntılarını döndürmek için fetchFields() yönteminin kullanımı gösterilmektedir. Öncelikle bir yer kimliği kullanılarak yeni bir Place nesnesi örneklendirilir, ardından displayName ve photos alanlarının belirtildiği fetchFields() çağrısı yapılır. Ardından, ilk yer fotoğrafı sayfada gösterilir. Place sınıfını kullanırken hizmet durumunu kontrol etmeniz gerekmez. Bu işlem otomatik olarak gerçekleştirilir.

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 sınıfındaki yazar ilişkilendirmeleri

Place sınıfı, yazarın adını, yazarın Google profil sayfasının URI'sini ve yazarın profil fotoğrafının URI'sini içeren bir AuthorAttribution örneği olarak yazar ilişkilendirmelerini döndürür. Aşağıdaki snippet, ilk fotoğraf sonucu için ilişkilendirme verilerinin alınmasını gösterir.

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

Daha fazla bilgi