Place Photos ช่วยให้คุณเพิ่มเนื้อหาภาพถ่ายคุณภาพสูงลงในหน้าเว็บได้
หน้านี้อธิบายความแตกต่างระหว่างฟีเจอร์รูปภาพสถานที่ใน Place
class (ใหม่) และ 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 |
เมธอดต้องใช้การเรียกกลับเพื่อจัดการออบเจ็กต์ผลลัพธ์และ
google.maps.places.PlacesServiceStatus การตอบกลับ |
ใช้ Promise และทำงานแบบไม่พร้อมกัน |
วิธีการต้องผ่าน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;