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