התכונה 'ביקורות על מקומות' מאפשרת לכם להוסיף ביקורות ודירוגים של משתמשים לדפי האינטרנט שלכם. בדף הזה מוסבר על ההבדלים בין ביקורות על מקומות כפי שמשתמשים בהן במחלקה Place
(חדשה) ובמחלקה PlacesService
(קודמת), ומוצגים כמה קטעי קוד להשוואה.
-
PlacesService
(מאמר שמתייחס לגרסה קודמת) מחזירה מערך של מופעיPlaceReview
כחלק מאובייקטPlaceResult
לכל בקשתgetDetails()
אם השדהreviews
מצוין בבקשה. -
Place
(חדש) מחזירה מערך של מופעיReview
כחלק מבקשתfetchFields()
אם השדהreviews
צוין בבקשה.
בטבלה הבאה מפורטים כמה מההבדלים העיקריים בשימוש בביקורות על מקומות בין המחלקה Place
לבין PlacesService
:
PlacesService (גרסה קודמת) |
Place (חדש) |
---|---|
ממשק PlaceReview |
כיתה Review |
ב-methods צריך להשתמש בקריאה חוזרת כדי לטפל באובייקט התוצאות ובתגובה google.maps.places.PlacesServiceStatus . |
משתמש ב-Promises, ופועל באופן אסינכרוני. |
השיטות מחייבות PlacesServiceStatus בדיקה. |
אין צורך בבדיקת סטטוס, אפשר להשתמש בטיפול רגיל בשגיאות. מידע נוסף |
צריך ליצור מופע של PlacesService באמצעות מפה או רכיב div. |
Place אפשר ליצור מופע של המחלקה בכל מקום שנדרש, בלי הפניה למפה או לאלמנט בדף. |
PlaceReview מחזירה נתוני שיוך לביקורת באמצעות השדות author_name , author_url ו-profile_photo_url . |
Review מחזירה נתוני שיוך לביקורת באמצעות מופע של
AuthorAttribution . |
השוואת קוד
בקטע הזה מוצג קוד להשוואה בין שיטות חיפוש טקסט, כדי להמחיש את ההבדלים בין הביקורות על מקומות בגרסה הקודמת של PlacesService
לבין הביקורות בגרסה החדשה של המחלקה Place
.
שירות המקומות (מדור קודם)
בקטע הקוד הבא מתבצעת קריאה ל-getDetails()
כדי לבקש פרטים על מקום, כולל ביקורות, והתוצאה הראשונה של הביקורת מוצגת בחלון מידע.
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,
});
}
});
סוג המקום (חדש)
בקטע הקוד הבא מבוצעת קריאה לשיטה fetchFields()
כדי לבקש פרטים על מקום, כולל ביקורות, והתוצאה של הביקורת הראשונה מוצגת בחלון מידע.
// 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,
});