Перейти на новое место. Отзывы
Оптимизируйте свои подборки
Сохраняйте и классифицируйте контент в соответствии со своими настройками.
Разработчики Европейской экономической зоны (ЕЭЗ) Обзоры мест позволяют добавлять отзывы и рейтинги пользователей на ваши веб-страницы. На этой странице объясняются различия между отзывами мест, используемыми в классе Place
(новый) и PlacesService
(старый), а также приводятся некоторые фрагменты кода для сравнения.
-
PlacesService
(устаревшая версия) возвращает массив экземпляров PlaceReview
как часть объекта PlaceResult
для любого запроса getDetails()
, если в запросе указано поле reviews
. -
Place
(новый) возвращает массив экземпляров Review
как часть запроса fetchFields()
если поле reviews
указано в запросе.
В следующей таблице перечислены некоторые основные различия в использовании обзоров мест между классом Place
и PlacesService
:
PlacesService (устаревший) | Place (новое) |
---|
Интерфейс PlaceReview | Review класса |
Методы требуют использования обратного вызова для обработки объекта результатов и ответа google.maps.places.PlacesServiceStatus . | Использует Promises и работает асинхронно. |
Методы требуют проверки PlacesServiceStatus . | Проверка статуса не требуется, можно использовать стандартную обработку ошибок. Подробнее . |
Экземпляр PlacesService должен быть создан с использованием карты или элемента div. | Place может быть создано в любом месте, где это необходимо, без ссылки на карту или элемент страницы. |
PlaceReview возвращает данные об атрибуции обзора, используя поля author_name , author_url и profile_photo_url . | Review возвращает данные об атрибуции для обзора с использованием экземпляра AuthorAttribution . |
Сравнение кодов
В этом разделе сравнивается код для методов текстового поиска, чтобы проиллюстрировать различия между обзорами Place в устаревшем классе 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,
});
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2025-08-29 UTC.
[null,null,["Последнее обновление: 2025-08-29 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)"]]