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

توسعه‌دهندگان منطقه اقتصادی اروپا (EEA)

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

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

جدول زیر برخی از تفاوت‌های اصلی در استفاده از بررسی مکان بین کلاس Place و PlacesService را فهرست می‌کند:

PlacesService (قدیمی) Place (جدید)
رابط PlaceReview کلاس Review
متدها برای مدیریت شیء نتایج و پاسخ google.maps.places.PlacesServiceStatus نیاز به استفاده از یک تابع فراخوانی (callback) دارند. از Promiseها استفاده می‌کند و به صورت ناهمگام کار می‌کند.
متدها نیاز به بررسی PlacesServiceStatus دارند. نیازی به بررسی وضعیت نیست، می‌تواند از مدیریت خطای استاندارد استفاده کند. اطلاعات بیشتر .
PlacesService باید با استفاده از یک نقشه یا یک عنصر div نمونه‌سازی شود. Place می‌توان در هر جایی که لازم باشد، بدون ارجاع به نقشه یا عنصر صفحه، نمونه‌سازی کرد.
PlaceReview داده‌های انتساب را برای نقد با استفاده از فیلدهای author_name ، author_url و profile_photo_url برمی‌گرداند. Review با استفاده از یک نمونه AuthorAttribution ، داده‌های انتساب را برای نقد و بررسی برمی‌گرداند.

مقایسه کد

این بخش، کد مربوط به متدهای جستجوی متن را مقایسه می‌کند تا تفاوت‌های بین بررسی‌های مکان در 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,
});