Yeni Yer Yorumları'na geçiş yapma

Avrupa Ekonomik Alanı (AEA) geliştiricileri

Yer yorumları, web sayfalarınıza kullanıcı yorumları ve puanları eklemenize olanak tanır. Bu sayfada, Place (yeni) ve PlacesService (eski) sınıflarında kullanılan yer yorumları arasındaki farklar açıklanmakta ve karşılaştırma için bazı kod snippet'leri verilmektedir.

  • PlacesService (eski) reviews alanı istekte belirtilmişse herhangi bir getDetails() isteği için PlaceResult nesnesinin bir parçası olarak PlaceReview örneklerinin bir dizisini döndürür.
  • Place (yeni), istekte Review örneklerinden oluşan bir dizi döndürür. Bu işlem, fetchFields() isteğinin bir parçası olarak yapılır. reviews alanı istekte belirtilmişse bu işlem gerçekleştirilir.

Aşağıdaki tabloda, Place sınıfı ile PlacesService arasındaki yer yorumlarının kullanımındaki temel farklardan bazıları listelenmiştir:

PlacesService (Eski) Place (Yeni)
PlaceReview arayüzü Review sınıfı
Yöntemler, sonuç nesnesini ve google.maps.places.PlacesServiceStatus yanıtını işlemek için geri çağırma işlevinin kullanılmasını gerektirir. Promises 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 edinin.
PlacesService, bir harita veya div öğesi kullanılarak oluşturulmalıdır. Place, bir harita veya sayfa öğesine referans verilmeden gerektiği her yerde örneklenebilir.
PlaceReview, author_name, author_url ve profile_photo_url alanlarını kullanarak incelemeyle ilgili ilişkilendirme verilerini döndürür. Review, AuthorAttribution örneği kullanarak yorumla ilgili ilişkilendirme verilerini döndürür.

Kod karşılaştırması

Bu bölümde, eski PlacesService ve daha yeni Place sınıfındaki yer yorumları arasındaki farkları göstermek için metin arama yöntemlerinin kodu karşılaştırılır.

Yer hizmeti (eski)

Aşağıdaki snippet, yorumlar da dahil olmak üzere yer ayrıntılarını istemek için getDetails() işlevini çağırır ve ilk yorum sonucunu bir bilgi penceresinde gösterir.

const request = {
  placeId: "ChIJpyiwa4Zw44kRBQSGWKv4wgA", // Faneuil Hall Marketplace, Boston, MA
  fields: ["name", "formatted_address", "geometry", "reviews"],
};
const service = new google.maps.places.PlacesService(map);

service.getDetails(request, (place, status) => {
  if (
    status === google.maps.places.PlacesServiceStatus.OK &&
    place &&
    place.geometry &&
    place.geometry.location
  ) {
    // If there are any reviews display the first one.
    if (place.reviews && place.reviews.length > 0) {
      // Get info for the first review.
      let reviewRating = place.reviews[0].rating;
      let reviewText = place.reviews[0].text;
      let authorName = place.reviews[0].author_name;
      let authorUri = place.reviews[0].author_url;

      // Format the review using HTML.
      contentString =`
            <div id="title"><b>${place.name}</b></div>
            <div id="address">${place.formatted_address}</div>
            <a href="${authorUri}" target="_blank">Author: ${authorName}</a>
            <div id="rating">Rating: ${reviewRating} stars</div>
            <div id="rating"><p>Review: ${reviewText}</p></div>`;
    } else {
      contentString = `No reviews were found for ${place.name}`;
    }

    const infowindow = new google.maps.InfoWindow({
      content: contentString,
      ariaLabel: place.displayName,
    });

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

    // Show the info window.
    infowindow.open({
      anchor: marker,
      map,
    });
  }
});

Yer sınıfı (yeni)

Aşağıdaki snippet, yorumlar da dahil olmak üzere yer ayrıntılarını istemek için fetchFields() yöntemini çağırır ve ilk yorum sonucunu bir bilgi penceresinde gösterir.

// Use a place ID to create a new Place instance.
const place = new google.maps.places.Place({
  id: "ChIJpyiwa4Zw44kRBQSGWKv4wgA", // Faneuil Hall Marketplace, Boston, MA
});

// Call fetchFields, passing 'reviews' and other needed fields.
await place.fetchFields({
  fields: ["displayName", "formattedAddress", "location", "reviews"],
});

// If there are any reviews display the first one.
if (place.reviews && place.reviews.length > 0) {
  // Get info for the first review.
  let reviewRating = place.reviews[0].rating;
  let reviewText = place.reviews[0].text;
  let authorName = place.reviews[0].authorAttribution.displayName;
  let authorUri = place.reviews[0].authorAttribution.uri;

  // Format the review using HTML.
  contentString =`
          <div id="title"><b>${place.displayName}</b></div>
          <div id="address">${place.formattedAddress}</div>
          <a href="${authorUri}" target="_blank">Author: ${authorName}</a>
          <div id="rating">Rating: ${reviewRating} stars</div>
          <div id="rating"><p>Review: ${reviewText}</p></div>`;
} else {
  contentString = `No reviews were found for ${place.displayName}`;
}

// Create an infowindow to display the review.
infoWindow = new google.maps.InfoWindow({
  content: contentString,
  ariaLabel: place.displayName,
});

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

// Show the info window.
infoWindow.open({
  anchor: marker,
  map,
});