عکس مکان به شما امکان می دهد محتوای عکاسی با کیفیت بالا را به صفحات وب خود اضافه کنید. این صفحه تفاوتهای بین ویژگیهای عکس مکان در کلاس Place
(جدید) و PlacesService
(میراث) را توضیح میدهد و چند قطعه کد برای مقایسه ارائه میکند.
- اگر فیلد
photos
در درخواست مشخص شده باشد،PlacesService
(میراث) آرایه ای از حداکثر 10 شیPlacePhoto
را به عنوان بخشی از شیPlaceResult
برای هر درخواستgetDetails()
برمی گرداند. در موردtextSearch()
وnearbySearch()
عکس مکان اول به صورت پیش فرض در صورت موجود بودن برگردانده می شود. - اگر فیلد
photos
در درخواست مشخص شده باشد، کلاسPlace
آرایه ای از حداکثر 10 شیPhoto
به عنوان بخشی از درخواستfetchFields()
برمی گرداند.
جدول زیر برخی از تفاوتهای اصلی در استفاده از عکسهای مکان را بین کلاس Place
و PlacesService
فهرست میکند:
PlacesService (قدیمی) | Place (جدید) |
---|---|
رابط PlacePhoto | کلاس Photo |
PlacePhoto html_attributions به عنوان یک رشته برمی گرداند. | Photo یک نمونه AuthorAttribution را برمیگرداند. |
روشها نیاز به استفاده از یک تماس برای رسیدگی به شی نتایج و پاسخ google.maps.places.PlacesServiceStatus دارند. | از Promises استفاده می کند و به صورت ناهمزمان کار می کند. |
روشها به بررسی PlacesServiceStatus نیاز دارند. | بدون بررسی وضعیت مورد نیاز، می توان از مدیریت خطای استاندارد استفاده کرد. |
PlacesService باید با استفاده از یک نقشه یا یک عنصر div نمونه سازی شود. | Place میتواند هر جا که لازم باشد، بدون ارجاع به نقشه یا عنصر صفحه، نمونهسازی شود. |
مقایسه کدها
این بخش کد عکسهای مکان را مقایسه میکند تا تفاوتهای بین سرویس Places و کلاس Place را نشان دهد. تکههای کد کد مورد نیاز برای درخواست عکسها در هر API مربوطه را نشان میدهند.
خدمات مکانها (قدیمی)
قطعه زیر بازگشت عکس ها با استفاده از PlacesService
و نمایش اولین نتیجه عکس در صفحه را نشان می دهد. در این مثال، درخواست جزئیات مکان، شناسه مکان را به همراه فیلدهای name
و photos
مشخص می کند. پس از بررسی وضعیت سرویس، اولین عکس در صفحه نمایش داده می شود. هنگام نمونه سازی PlacesService
، یک نقشه یا یک عنصر div
باید مشخص شود. از آنجایی که این مثال دارای نقشه نیست، از عنصر div
استفاده شده است.
function getPhotos() {
// Construct the Place Details request.
const request = {
placeId: "ChIJydSuSkkUkFQRsqhB-cEtYnw",
fields: ["name", "photos"],
};
// Create an instance of PlacesService.
const attributionDiv = document.getElementById("attribution-div");
const service = new google.maps.places.PlacesService(attributionDiv);
// Check status and display the first photo in an img element.
service.getDetails(request, (place, status) => {
if (
status === google.maps.places.PlacesServiceStatus.OK && place
) {
const photoImg = document.getElementById('image-container');
photoImg.src = place.photos[0].getUrl({maxHeight: 400});
}
});
}
اسناد نویسنده در PlacesService
PlacesService
ارجاعات نویسنده مورد نیاز را به عنوان یک رشته html_attributions
حاوی یک URL که به صفحه نمایه Google نویسنده اشاره دارد، برمی گرداند. قطعه زیر بازیابی داده های انتساب را برای اولین نتیجه عکس نشان می دهد.
let attributionUrl = place.photos[0].html_attributions;
بیشتر بدانید
مکان کلاس (جدید)
قطعه زیر با استفاده از متد fetchFields()
برای بازگرداندن جزئیات مکان از جمله نام نمایشی و عکسهای مکان را نشان میدهد. ابتدا یک شیء Place
جدید با استفاده از شناسه مکان و سپس فراخوانی به fetchFields()
که در آن فیلدهای displayName
و photos
مشخص شده اند، نمونه سازی می شود. سپس اولین عکس در صفحه نمایش داده می شود. هنگام استفاده از کلاس Place
، نیازی به بررسی وضعیت سرویس نیست، زیرا این مورد به صورت خودکار مدیریت می شود.
async function getPhotos() {
// Use a place ID to create a new Place instance.
const place = new google.maps.places.Place({
id: 'ChIJydSuSkkUkFQRsqhB-cEtYnw', // Woodland Park Zoo, Seattle WA
});
// Call fetchFields, passing the needed data fields.
await place.fetchFields({ fields: ['displayName','photos'] });
console.log(place.displayName);
console.log(place.photos[0]);
// Add the first photo to an img element.
const photoImg = document.getElementById('image-container');
photoImg.src = place.photos[0].getURI({maxHeight: 400});
}
اسناد نویسنده در کلاس Place
کلاس Place
اسناد نویسنده را به عنوان یک نمونه AuthorAttribution
شامل نام نویسنده، یک URI برای صفحه نمایه Google نویسنده و یک URI برای عکس نمایه نویسنده برمیگرداند. قطعه زیر بازیابی داده های انتساب را برای اولین نتیجه عکس نشان می دهد.
let name = place.photos[0].authorAttributions[0].displayName;
let attributionUrl = place.photos[0].authorAttributions[0].uri;
let photoUrl = place.photos[0].authorAttributions[0].photoUri;