התכונה 'הוספת תמונות' מאפשרת לכם להוסיף לדפי האינטרנט שלכם תוכן צילום באיכות גבוהה.
בדף הזה מוסבר על ההבדלים בין התכונות של תמונות של מקומות בכיתה Place
(חדשה) ובכיתה PlacesService
(קודמת), ומוצגים קטעי קוד להשוואה.
PlacesService
(מדור קודם) מחזירה מערך של עד 10 אובייקטים מסוגPlacePhoto
כחלק מהאובייקטPlaceResult
לכל בקשה מסוגgetDetails()
, אם השדהphotos
צוין בבקשה. במקרה שלtextSearch()
ו-nearbySearch()
, התמונה הראשונה של המקום מוחזר כברירת מחדל אם היא זמינה.- הכיתה
Place
מחזירה מערך של עד 10 אובייקטים מסוגPhoto
כחלק מבקשתfetchFields()
, אם השדהphotos
צוין בבקשה.
בטבלה הבאה מפורטים חלק מההבדלים העיקריים בשימוש בתמונות של מקומות בין הכיתה Place
לבין PlacesService
:
PlacesService (דור קודם) |
Place (חדש) |
---|---|
ממשק PlacePhoto |
הכיתה Photo |
PlacePhoto מחזירה את הערך
html_attributions כמחרוזת. |
הפונקציה Photo מחזירה מופע של
AuthorAttribution . |
בשיטות צריך להשתמש בקריאה חוזרת (callback) כדי לטפל באובייקט התוצאות ובתגובה google.maps.places.PlacesServiceStatus . |
משתמשת ב-Promises ופועלת באופן אסינכרוני. |
השיטות מחייבות בדיקה של PlacesServiceStatus . |
אין צורך בבדיקת סטטוס, אפשר להשתמש בטיפול שגיאה רגיל. |
צריך ליצור מופע של PlacesService באמצעות מפה או רכיב div. |
אפשר ליצור מופע של Place בכל מקום שבו יש צורך, בלי הפניה למפה או לרכיב דף. |
השוואת קוד
בקטע הזה מוצגת השוואה בין הקוד של תמונות של מקומות כדי להמחיש את ההבדלים בין שירות המקומות לבין הכיתה Place. בקטעי הקוד מוצג הקוד הנדרש לבקשת תמונות של מקומות בכל ממשק API רלוונטי.
שירות Places (קודם)
קטע הקוד הבא מראה את החזרת התמונות באמצעות 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;