Yer yorumları, web sayfalarınıza kullanıcı yorumları ve puanları eklemenize olanak tanır. Bu sayfada, Place sınıfında (yeni) ve PlacesService sınıfında (eski) kullanılan yer yorumları arasındaki farklar açıklanmakta ve karşılaştırma için bazı kod snippet'leri sunulmaktadır.
PlacesService(eski), istektereviewsalanı belirtilmişse herhangi birgetDetails()isteği içinPlaceResultnesnesinin bir parçası olarakPlaceReviewörneklerinden oluşan bir dizi döndürür.Place(yeni), istektereviewsalanı belirtilmişsefetchFields()isteğinin bir parçası olarakReviewörneklerinden oluşan bir dizi döndürür.
Aşağıdaki tabloda, Place sınıfı ile PlacesService arasında yer yorumlarının kullanımındaki temel farklardan bazıları listelenmiştir:
PlacesService (Eski) |
Place (Yeni) |
|---|---|
PlaceReview arayüzü |
Review sınıfı |
Yöntemler, sonuç nesnesini ve google.maps.places.PlacesServiceStatus yanıtını işlemek için bir geri çağırma işlevinin kullanılmasını gerektirir. |
Promise'leri kullanır ve eşzamansız olarak çalışır. |
Yöntemler için PlacesServiceStatus kontrolü gerekir. |
Durum kontrolü gerekmez, standart hata işleme kullanılabilir. Daha fazla bilgi |
PlacesService, bir harita veya div öğesi kullanılarak örneklendirilmelidir. |
Place, harita veya sayfa öğesine referans verilmeden gerektiği her yerde örneklenebilir. |
PlaceReview, author_name, author_url ve profile_photo_url alanlarını kullanarak yorum için ilişkilendirme verilerini döndürür. |
Review, bir
AuthorAttribution örneği kullanarak yorum için ilişkilendirme verilerini döndürür. |
Kod karşılaştırması
Bu bölümde, eski PlacesService ve yeni Place sınıfındaki yer yorumları arasındaki farkları göstermek için metin arama yöntemlerinin kodu karşılaştırılmaktadır.
Places hizmeti (eski)
Aşağıdaki snippet, yorumlar dahil olmak üzere yer ayrıntılarını istemek için getDetails() yöntemini çağırır ve ilk yorum sonucunu bir bilgi penceresinde gösterir.
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,
});
}
});
Yer sınıfı (yeni)
Aşağıdaki snippet, yorumlar da dahil olmak üzere yer ayrıntılarını istemek için fetchFields() yöntemini çağırır ve ilk yorum sonucunu bir bilgi penceresinde gösterir.
// 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,
});