Mit Ortsrezensionen können Sie Ihren Webseiten Nutzerrezensionen und ‑bewertungen hinzufügen. Auf dieser Seite
werden die Unterschiede zwischen Ortsrezensionen in der Klasse Place(neu) und PlacesService (alt) erläutert und einige Code-Snippets zum
Vergleich bereitgestellt.
PlacesService(alt) gibt ein Array vonPlaceReviewInstanzen als Teil desPlaceResult-Objekts für jedegetDetails()-Anfrage zurück, wenn das Feldreviewsin der Anfrage angegeben ist.Place(neu) gibt ein Array vonReviewInstanzen als Teil einerfetchFields()-Anfrage zurück, wenn das Feldreviewsin der Anfrage angegeben ist.
In der folgenden Tabelle sind einige der wichtigsten Unterschiede bei der Verwendung von Orts
rezensionen zwischen der Place Klasse und PlacesService aufgeführt:
PlacesService (alt) |
Place (neu) |
|---|---|
PlaceReview -Schnittstelle |
Review -Klasse |
Für Methoden ist die Verwendung eines Callbacks erforderlich, um das Ergebnisobjekt und
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, Standardfehlerbehandlung kann verwendet werden. Weitere Informationen. |
PlacesService muss mit einer Karte oder einem
div-Element instanziiert werden. |
Place kann überall instanziiert werden, ohne dass ein
Verweis auf eine Karte oder ein Seitenelement erforderlich ist. |
PlaceReview gibt Attributionsdaten für die Rezension über die Felder author_name, author_url und profile_photo_url zurück. |
Review gibt Attributionsdaten für die Rezension über eine
AuthorAttribution-Instanz zurück. |
Codevergleich
In diesem Abschnitt wird Code für Textsuchmethoden verglichen, um die Unterschiede
zwischen Ortsrezensionen in der alten PlacesService und der neueren Place Klasse zu veranschaulichen.
Places Service (alt)
Das folgende Snippet ruft getDetails() auf, um Ortsdetails einschließlich Rezensionen anzufordern, und zeigt das erste Rezensionsergebnis in einem Infofenster an.
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)
Das folgende Snippet ruft fetchFields()
Methode auf, um Ortsdetails einschließlich Rezensionen anzufordern, und zeigt das erste Rezensions
ergebnis in einem Infofenster an.
// 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,
});