Yeni Yer Yorumları'na geçiş yapma

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

  • PlacesService (eski), reviews alanı istekte belirtilmişse herhangi bir getDetails() isteği için PlaceResult nesnesi kapsamında bir PlaceReview örneği dizisi döndürür.
  • Place (yeni), istekte reviews alanı belirtilmişse fetchFields() isteği kapsamında bir Review örneği dizisi döndürür.

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

PlacesService (Eski) Place (Yeni)
PlaceReview arayüzü Review sınıf
Yöntemler, sonuçlar nesnesini ve google.maps.places.PlacesServiceStatus yanıtını işlemek için 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. Zorunlu durum kontrolü yoktur, standart hata işleme kullanılabilir.
PlacesService, bir harita veya div öğesi kullanılarak örneklenmelidir. Place, harita veya sayfa öğesine referans vermeden gerektiği her yerde örneklendirilebilir.
PlaceReview, author_name, author_url ve profile_photo_url alanlarını kullanarak yorumla ilgili ilişkilendirme verilerini döndürür. Review, AuthorAttribution örneğini kullanarak yorumla ilgili ilişkilendirme verilerini döndürür.

Kod karşılaştırması

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

Yerler hizmeti (eski)

Aşağıdaki snippet, yorumlar da dahil olmak üzere yer ayrıntılarını istemek için getDetails()'ü ç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,
});