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 sağlanmaktadır.
PlacesService
(eski),reviews
alanı istekte belirtilmişse herhangi birgetDetails()
isteği içinPlaceResult
nesnesi kapsamında birPlaceReview
örneği dizisi döndürür.Place
(yeni), istektereviews
alanı belirtilmişsefetchFields()
isteği kapsamında birReview
örneği dizisi döndürür.
Aşağıdaki tabloda, Place
sınıfı ile PlacesService
arasındaki yer yorumlarının kullanımındaki temel farklılıklardan bazıları listelenmiştir:
PlacesService (Eski) |
Place (Yeni) |
---|---|
PlaceReview arayüzü |
Review sınıf |
Yöntemler, sonuçlar nesnesini ve google.maps.places.PlacesServiceStatus yanıtını işlemek için 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. |
Zorunlu durum kontrolü yoktur, standart hata işleme kullanılabilir. |
PlacesService , bir harita veya div öğesi kullanılarak örneklenmelidir. |
Place , harita veya sayfa öğesine referans vermeden gerektiği her yerde örneklendirilebilir. |
PlaceReview , author_name , author_url ve profile_photo_url alanlarını kullanarak yorumla ilgili ilişkilendirme verilerini döndürür. |
Review ,
AuthorAttribution örneğini kullanarak yorumla ilgili ilişkilendirme verilerini döndürür. |
Kod karşılaştırması
Bu bölümde, eski PlacesService
sınıfındaki yer yorumları ile 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.
Yerler hizmeti (eski)
Aşağıdaki snippet, incelemeler dahil olmak üzere yer ayrıntılarını istemek için getDetails()
'ü çağırır ve ilk inceleme 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,
});