Places API สามารถแสดงข้อมูลโดยละเอียดเกี่ยวกับสถานที่หนึ่งๆ หน้านี้จะอธิบายความแตกต่างระหว่างรายละเอียดสถานที่ที่ใช้ในคลาส Place
(ใหม่) และ PlacesService
(เดิม) รวมถึงแสดงข้อมูลโค้ดบางส่วนเพื่อเปรียบเทียบ ตารางต่อไปนี้แสดงความแตกต่างหลักๆ ในการใช้รายละเอียดสถานที่ระหว่างคลาส Place
กับ PlacesService
PlacesService (เดิม) |
Place (ใหม่) |
---|---|
getDetails() |
fetchFields() |
PlaceDetailsRequest |
FetchFieldsRequest |
เมธอดต้องใช้การเรียกกลับเพื่อจัดการออบเจ็กต์ผลลัพธ์และการตอบกลับgoogle.maps.places.PlacesServiceStatus |
ใช้ Promises และทํางานแบบไม่พร้อมกัน |
วิธีการต้องเลือกPlacesServiceStatus |
ไม่ต้องมีการตรวจสอบสถานะ สามารถใช้การจัดการข้อผิดพลาดมาตรฐานได้ |
ฟิลด์ข้อมูลสถานที่มีการจัดรูปแบบโดยใช้รูปแบบ Snake Case | ฟิลด์ข้อมูลสถานที่มีการจัดรูปแบบโดยใช้รูปแบบ Camel Case |
จำกัดไว้ที่ชุดประเภทสถานที่และช่องข้อมูลสถานที่ที่กำหนดไว้ | มีตัวเลือกประเภทสถานที่และฟิลด์ข้อมูลสถานที่ที่อัปเดตเป็นประจำเพิ่มเติม |
การเปรียบเทียบโค้ด
ส่วนนี้จะเปรียบเทียบโค้ด 2 รายการที่คล้ายกันเพื่อแสดงให้เห็นความแตกต่างระหว่างบริการ Places กับคลาส Place ข้อมูลโค้ดแสดงโค้ดที่จําเป็นสําหรับ API ที่เกี่ยวข้องแต่ละรายการเพื่อส่งคําขอรายละเอียดสถานที่ จากนั้นใช้ข้อมูลสถานที่ที่ได้เพื่อเพิ่มเครื่องหมายลงในแผนที่
บริการ Places (เดิม)
ข้อมูลโค้ดแบบย่อต่อไปนี้แสดงการสร้างคำขอรายละเอียดสถานที่โดยใช้ PlacesService
คำขอใช้การเรียกกลับ รวมถึงการตรวจสอบแบบมีเงื่อนไขใน PlacesServiceStatus
ระบุช่องข้อมูลสถานที่ที่จำเป็นในเนื้อหาคำขอ
function getPlaceDetails() {
// Instantiate the Places Service.
const service = new google.maps.places.PlacesService(map);
// Make a request using the Place ID.
const request = {
placeId: "ChIJN1t_tDeuEmsRUsoyG83frY4",
fields: ["name", "formatted_address", "place_id", "geometry"],
};
// Request place details.
service.getDetails(request, (place, status) => {
// Check whether PlacesServiceStatus is OK.
if (
status === google.maps.places.PlacesServiceStatus.OK &&
place &&
place.geometry &&
place.geometry.location
) {
// Log the result.
console.log(place.name);
console.log(place.formatted_address);
// Add a marker for the place.
const marker = new google.maps.Marker({
map,
position: place.geometry.location,
title: place.name,
});
}
});
}
ดูข้อมูลเพิ่มเติม
- ดูตัวอย่างโค้ดที่สมบูรณ์
- เอกสารประกอบเกี่ยวกับรายละเอียดสถานที่
getDetails
ข้อมูลอ้างอิง
คลาสสถานที่ (ใหม่)
ข้อมูลโค้ดแบบย่อต่อไปนี้แสดงการสร้างคําขอรายละเอียดสถานที่โดยใช้คลาส Place
คำขอเป็นแบบอะซิงโครนัสและไม่มีการตรวจสอบสถานะ (ใช้การจัดการข้อผิดพลาดมาตรฐานได้) ระบบจะใช้รหัสสถานที่เพื่อสร้างอินสแตนซ์ Place
ใหม่ ซึ่งจะใช้ส่งคำขอ (fetchFields()
) ระบบจะไม่ส่งผ่านช่องข้อมูลสถานที่ที่จำเป็นจนกว่าจะมีการเรียกใช้ fetchFields()
ซึ่งทำให้มีความยืดหยุ่นมากขึ้น เนื่องจากเมธอด fetchFields()
ใช้โอเปอเรเตอร์ await จึงใช้ได้เฉพาะภายในฟังก์ชัน async
เท่านั้น
async function getPlaceDetails() {
// Use place ID to create a new Place instance.
const place = new google.maps.places.Place({
id: "ChIJN5Nz71W3j4ARhx5bwpTQEGg",
requestedLanguage: "en", // optional
});
// Call fetchFields, passing the needed data fields.
await place.fetchFields({
fields: ["displayName", "formattedAddress", "location"],
});
// Log the result.
console.log(place.displayName);
console.log(place.formattedAddress);
// Add an Advanced Marker.
const marker = new google.maps.marker.AdvancedMarkerElement({
map,
position: place.location,
title: place.displayName,
});
}
ดูข้อมูลเพิ่มเติม
- ดูตัวอย่างโค้ดที่สมบูรณ์
- เอกสารประกอบเกี่ยวกับรายละเอียดสถานที่
fetchFields()
ข้อมูลอ้างอิง