به بررسی های مکان جدید مهاجرت کنید، به بررسی های مکان جدید مهاجرت کنید

نظرات مکان به شما امکان می دهد نظرات و رتبه بندی های کاربران را به صفحات وب خود اضافه کنید. این صفحه تفاوت‌های بین بررسی‌های مکان را که در کلاس Place (جدید) و PlacesService (میراث) استفاده می‌شود، توضیح می‌دهد و چند قطعه کد برای مقایسه ارائه می‌کند.

  • اگر قسمت reviews در درخواست مشخص شده باشد، PlacesService (میراث) آرایه ای از نمونه های PlaceReview را به عنوان بخشی از شی PlaceResult برای هر درخواست getDetails() برمی گرداند.
  • اگر فیلد reviews در درخواست مشخص شده باشد، Place (جدید) آرایه ای از نمونه های Review را به عنوان بخشی از درخواست fetchFields() برمی گرداند.

جدول زیر برخی از تفاوت های اصلی در استفاده از بررسی مکان بین کلاس 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,
});