Zur neuen Funktion „Rezensionen zu Orten“ migrieren

Entwickler im Europäischen Wirtschaftsraum (EWR)

Mit Ortsrezensionen können Sie Nutzerrezensionen und ‑bewertungen auf Ihren Webseiten einfügen. Auf dieser Seite werden die Unterschiede zwischen Ortsrezensionen in der Klasse Place (neu) und PlacesService (alt) erläutert. Außerdem finden Sie einige Code-Snippets zum Vergleich.

  • PlacesService (Legacy) gibt ein Array von PlaceReview-Instanzen als Teil des PlaceResult-Objekts für jede getDetails()-Anfrage zurück, wenn das Feld reviews in der Anfrage angegeben ist.
  • Place (neu) gibt ein Array von Review-Instanzen als Teil einer fetchFields()-Anfrage zurück, wenn das Feld reviews in der Anfrage angegeben ist.

In der folgenden Tabelle sind einige der wichtigsten Unterschiede bei der Verwendung von Ortsrezensionen zwischen der Klasse Place und PlacesService aufgeführt:

PlacesService (Legacy) Place (Neu)
PlaceReview-Schnittstelle Review-Klasse
Für Methoden ist die Verwendung eines Callbacks erforderlich, um das Ergebnisobjekt und die google.maps.places.PlacesServiceStatus-Antwort zu verarbeiten. Verwendet Promises und funktioniert asynchron.
Für Methoden ist eine PlacesServiceStatus-Prüfung erforderlich. Keine Statusprüfung erforderlich, es kann die Standardfehlerbehandlung verwendet werden. Weitere Informationen
PlacesService muss mit einer Karte oder einem div-Element instanziiert werden. Place kann bei Bedarf instanziiert werden, ohne dass ein Verweis auf eine Karte oder ein Seitenelement erforderlich ist.
PlaceReview gibt Attributionsdaten für die Rezension zurück, die die Felder author_name, author_url und profile_photo_url verwendet. Review gibt Attributionsdaten für die Rezension zurück, die eine AuthorAttribution-Instanz verwendet.

Codevergleich

In diesem Abschnitt wird Code für Textsuchmethoden verglichen, um die Unterschiede zwischen den Rezensionen für Orte in der alten PlacesService- und der neueren Place-Klasse zu veranschaulichen.

Places Service (Legacy)

Im folgenden Snippet wird getDetails() aufgerufen, um Ortsdetails einschließlich Rezensionen anzufordern. Das erste Rezensionsergebnis wird in einem Infofenster angezeigt.

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,
    });
  }
});

Place-Klasse (neu)

Im folgenden Snippet wird die Methode fetchFields() aufgerufen, um Ortsdetails einschließlich Rezensionen anzufordern. Das erste Rezensionsergebnis wird in einem Infofenster angezeigt.

// 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,
});