reviewsהשקת Places UI Kit: ספריית רכיבים מוכנה לשימוש בעלות נמוכה, שמאפשרת לכם להוסיף לכל מפה שתבחרו את ממשק המשתמש המוכר של 'מקומות' במפות Google. כדאי לנסות אותו ולשלוח לנו משוב כדי לעזור לנו לעצב את העתיד של GMP.
קל לארגן דפים בעזרת אוספים
אפשר לשמור ולסווג תוכן על סמך ההעדפות שלך.
מפתחים באזור הכלכלי האירופי (EEA)
התכונה 'ביקורות על מקומות' מאפשרת לכם להוסיף ביקורות ודירוגים של משתמשים לדפי האינטרנט שלכם. בדף הזה מוסבר על ההבדלים בין ביקורות על מקומות כפי שמשתמשים בהן במחלקה Place (חדשה) ובמחלקה PlacesService (קודמת), ומוצגים כמה קטעי קוד להשוואה.
PlacesService (מאמר שמתייחס לגרסה קודמת) מחזירה מערך של מופעי PlaceReview כחלק מאובייקט PlaceResult לכל בקשת getDetails() אם השדה reviews מצוין בבקשה.
Place (חדש) מחזירה מערך של מופעי Review כחלק מבקשת fetchFields() אם השדה reviews צוין בבקשה.
בטבלה הבאה מפורטים כמה מההבדלים העיקריים בשימוש בביקורות על מקומות בין המחלקה Place לבין PlacesService:
ב-methods צריך להשתמש בקריאה חוזרת כדי לטפל באובייקט התוצאות ובתגובה google.maps.places.PlacesServiceStatus.
משתמש ב-Promises ופועל באופן אסינכרוני.
השיטות מחייבות PlacesServiceStatusבדיקה.
אין צורך בבדיקת סטטוס, אפשר להשתמש בטיפול רגיל בשגיאות.
מידע נוסף
צריך ליצור מופע של PlacesService באמצעות מפה או רכיב div.
Place אפשר ליצור מופע של המחלקה בכל מקום שנדרש, בלי הפניה למפה או לאלמנט בדף.
PlaceReview מחזירה נתוני שיוך לביקורת באמצעות השדות author_name, author_url ו-profile_photo_url.
Review מחזירה נתוני שיוך לביקורת באמצעות מופע של AuthorAttribution.
השוואת קוד
בקטע הזה מוצג קוד של שיטות לחיפוש טקסט, כדי להמחיש את ההבדלים בין ביקורות על מקומות בגרסה הקודמת של PlacesService לבין הגרסה החדשה של המחלקה Place.
שירות המקומות (מדור קודם)
בקטע הקוד הבא מתבצעת קריאה ל-getDetails() כדי לבקש פרטים על מקום, כולל ביקורות, והתוצאה הראשונה של הביקורת מוצגת בחלון מידע.
constrequest={placeId:"ChIJpyiwa4Zw44kRBQSGWKv4wgA",// Faneuil Hall Marketplace, Boston, MAfields:["name","formatted_address","geometry","reviews"],};constservice=newgoogle.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.letreviewRating=place.reviews[0].rating;letreviewText=place.reviews[0].text;letauthorName=place.reviews[0].author_name;letauthorUri=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}`;}constinfowindow=newgoogle.maps.InfoWindow({content:contentString,ariaLabel:place.displayName,});// Add a marker.constmarker=newgoogle.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.constplace=newgoogle.maps.places.Place({id:"ChIJpyiwa4Zw44kRBQSGWKv4wgA",// Faneuil Hall Marketplace, Boston, MA});// Call fetchFields, passing 'reviews' and other needed fields.awaitplace.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.letreviewRating=place.reviews[0].rating;letreviewText=place.reviews[0].text;letauthorName=place.reviews[0].authorAttribution.displayName;letauthorUri=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=newgoogle.maps.InfoWindow({content:contentString,ariaLabel:place.displayName,});// Add a marker.constmarker=newgoogle.maps.marker.AdvancedMarkerElement({map,position:place.location,title:place.displayName,});// Show the info window.infoWindow.open({anchor:marker,map,});
[[["התוכן קל להבנה","easyToUnderstand","thumb-up"],["התוכן עזר לי לפתור בעיה","solvedMyProblem","thumb-up"],["סיבה אחרת","otherUp","thumb-up"]],[["חסרים לי מידע או פרטים","missingTheInformationINeed","thumb-down"],["התוכן מורכב מדי או עם יותר מדי שלבים","tooComplicatedTooManySteps","thumb-down"],["התוכן לא עדכני","outOfDate","thumb-down"],["בעיה בתרגום","translationIssue","thumb-down"],["בעיה בדוגמאות/בקוד","samplesCodeIssue","thumb-down"],["סיבה אחרת","otherDown","thumb-down"]],["עדכון אחרון: 2025-09-05 (שעון UTC)."],[],[],null,["# Migrate to the new Place Reviews\n\n\u003cbr /\u003e\n\n**European Economic Area (EEA) developers** If your billing address is in the European Economic Area, effective on 8 July 2025, the [Google Maps Platform EEA Terms of Service](https://cloud.google.com/terms/maps-platform/eea) will apply to your use of the Services. Functionality varies by region. [Learn more](/maps/comms/eea/faq).\n\nPlace reviews lets you add user reviews and ratings to your web pages. This page\nexplains the differences between place reviews as used in the `Place` class\n(new) and `PlacesService` (legacy), and provides some code snippets for\ncomparison.\n\n- `PlacesService` (legacy) returns an array of [`PlaceReview`](/maps/documentation/javascript/reference/places-service#PlaceReview) instances as part of the `PlaceResult` object for any `getDetails()` request if the `reviews` field is specified in the request.\n- `Place` (new) returns an array of [`Review`](/maps/documentation/javascript/reference/place#Review) instances as part of a `fetchFields()` request if the `reviews` field is specified in the request.\n\nThe following table lists some of the main differences in the use of place\nreviews between the `Place` class and `PlacesService`:\n\n| [`PlacesService`](/maps/documentation/javascript/reference/places-service) (Legacy) | [`Place`](/maps/documentation/javascript/reference/place) (New) |\n|------------------------------------------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------|\n| [`PlaceReview`](/maps/documentation/javascript/reference/places-service#PlaceReview) interface | [`Review`](/maps/documentation/javascript/reference/place#Review) class |\n| Methods require the use of a callback to handle the results object and `google.maps.places.PlacesServiceStatus` response. | Uses Promises, and works asynchronously. |\n| Methods require a `PlacesServiceStatus` check. | No required status check, can use standard error handling. [Learn more](/maps/documentation/javascript/reference/errors). |\n| `PlacesService` must be instantiated using a map or a div element. | `Place` can be instantiated wherever needed, without a reference to a map or page element. |\n| `PlaceReview` returns attribution data for the review using the `author_name`, `author_url`, and `profile_photo_url` fields. | `Review` returns attribution data for the review using an [`AuthorAttribution`](/maps/documentation/javascript/reference/place#AuthorAttribution) instance. |\n\nCode comparison\n---------------\n\nThis section compares code for text search methods to illustrate the differences\nbetween Place reviews in the legacy `PlacesService` and the newer `Place` class.\n\n### Places service (legacy)\n\nThe following snippet calls `getDetails()` to request place details including\nreviews, and displays the first review result in an infowindow. \n\n const request = {\n placeId: \"ChIJpyiwa4Zw44kRBQSGWKv4wgA\", // Faneuil Hall Marketplace, Boston, MA\n fields: [\"name\", \"formatted_address\", \"geometry\", \"reviews\"],\n };\n const service = new google.maps.places.PlacesService(map);\n\n service.getDetails(request, (place, status) =\u003e {\n if (\n status === google.maps.places.PlacesServiceStatus.OK &&\n place &&\n place.geometry &&\n place.geometry.location\n ) {\n // If there are any reviews display the first one.\n if (place.reviews && place.reviews.length \u003e 0) {\n // Get info for the first review.\n let reviewRating = place.reviews[0].rating;\n let reviewText = place.reviews[0].text;\n let authorName = place.reviews[0].author_name;\n let authorUri = place.reviews[0].author_url;\n\n // Format the review using HTML.\n contentString =`\n \u003cdiv id=\"title\"\u003e\u003cb\u003e${place.name}\u003c/b\u003e\u003c/div\u003e\n \u003cdiv id=\"address\"\u003e${place.formatted_address}\u003c/div\u003e\n \u003ca href=\"${authorUri}\" target=\"_blank\"\u003eAuthor: ${authorName}\u003c/a\u003e\n \u003cdiv id=\"rating\"\u003eRating: ${reviewRating} stars\u003c/div\u003e\n \u003cdiv id=\"rating\"\u003e\u003cp\u003eReview: ${reviewText}\u003c/p\u003e\u003c/div\u003e`;\n } else {\n contentString = `No reviews were found for ${place.name}`;\n }\n\n const infowindow = new google.maps.InfoWindow({\n content: contentString,\n ariaLabel: place.displayName,\n });\n\n // Add a marker.\n const marker = new google.maps.Marker({\n map,\n position: place.geometry.location,\n });\n\n // Show the info window.\n infowindow.open({\n anchor: marker,\n map,\n });\n }\n });\n\n- [`getDetails()` reference](/maps/documentation/javascript/reference/places-service#PlacesService.getDetails)\n- [`PlaceReview` interface reference](/maps/documentation/javascript/reference/places-service#PlaceReview)\n\n### Place class (new)\n\nThe following snippet calls [`fetchFields()`](/maps/documentation/javascript/reference/place#Place.fetchFields)\nmethod to request place details including reviews, and displays the first review\nresult in an infowindow. \n\n // Use a place ID to create a new Place instance.\n const place = new google.maps.places.Place({\n id: \"ChIJpyiwa4Zw44kRBQSGWKv4wgA\", // Faneuil Hall Marketplace, Boston, MA\n });\n\n // Call fetchFields, passing 'reviews' and other needed fields.\n await place.fetchFields({\n fields: [\"displayName\", \"formattedAddress\", \"location\", \"reviews\"],\n });\n\n // If there are any reviews display the first one.\n if (place.reviews && place.reviews.length \u003e 0) {\n // Get info for the first review.\n let reviewRating = place.reviews[0].rating;\n let reviewText = place.reviews[0].text;\n let authorName = place.reviews[0].authorAttribution.displayName;\n let authorUri = place.reviews[0].authorAttribution.uri;\n\n // Format the review using HTML.\n contentString =`\n \u003cdiv id=\"title\"\u003e\u003cb\u003e${place.displayName}\u003c/b\u003e\u003c/div\u003e\n \u003cdiv id=\"address\"\u003e${place.formattedAddress}\u003c/div\u003e\n \u003ca href=\"${authorUri}\" target=\"_blank\"\u003eAuthor: ${authorName}\u003c/a\u003e\n \u003cdiv id=\"rating\"\u003eRating: ${reviewRating} stars\u003c/div\u003e\n \u003cdiv id=\"rating\"\u003e\u003cp\u003eReview: ${reviewText}\u003c/p\u003e\u003c/div\u003e`;\n } else {\n contentString = `No reviews were found for ${place.displayName}`;\n }\n\n // Create an infowindow to display the review.\n infoWindow = new google.maps.InfoWindow({\n content: contentString,\n ariaLabel: place.displayName,\n });\n\n // Add a marker.\n const marker = new google.maps.marker.AdvancedMarkerElement({\n map,\n position: place.location,\n title: place.displayName,\n });\n\n // Show the info window.\n infoWindow.open({\n anchor: marker,\n map,\n });\n\n- [See the example](/maps/documentation/javascript/examples/place-reviews)\n- [See the documentation](/maps/documentation/javascript/place-reviews)\n- [`fetchFields()` reference](/maps/documentation/javascript/reference/place#Place.fetchFields)\n- [`Review` class reference](/maps/documentation/javascript/reference/place#Review)"]]