ภาพรวม
ฟังก์ชันใน Places Library, Maps JavaScript API ช่วยให้แอปพลิเคชันของคุณค้นหาสถานที่ (ซึ่งกำหนดไว้ใน API นี้เป็นสถานที่ตั้ง สถานที่ตั้งทางภูมิศาสตร์ หรือจุดที่น่าสนใจที่โดดเด่น) ที่อยู่ภายในพื้นที่ที่กำหนด เช่น ขอบเขตของแผนที่ หรือรอบๆ จุดคงที่
Places API มีฟีเจอร์เติมข้อความอัตโนมัติซึ่งคุณสามารถใช้เพื่อทำให้แอปพลิเคชันมีลักษณะการทำงานแบบพิมพ์เพื่อค้นหาของช่องค้นหาใน Google Maps เมื่อผู้ใช้เริ่มพิมพ์ที่อยู่ การเติมข้อความอัตโนมัติจะกรอกข้อมูลที่เหลือให้ ดูข้อมูลเพิ่มเติมได้ในเอกสารประกอบเกี่ยวกับการเติมข้อความอัตโนมัติ
เริ่มต้นใช้งาน
หากคุณไม่คุ้นเคยกับ Maps JavaScript API หรือ JavaScript เราขอแนะนำให้ศึกษา JavaScript และรับคีย์ API ก่อนเริ่มต้นใช้งาน
โหลดไลบรารี
บริการ Places เป็นไลบรารีแบบสมบูรณ์ในตัวซึ่งแยกจากโค้ด Maps JavaScript API หลัก หากต้องการใช้ฟังก์ชันการทำงานที่มีอยู่ในไลบรารีนี้ คุณต้องโหลดไลบรารีก่อนโดยใช้พารามิเตอร์ libraries ใน URL บูตสแตรปของ Maps API ดังนี้
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&loading=async&libraries=places&callback=initMap">
</script>ดูข้อมูลเพิ่มเติมได้ที่ ภาพรวมของไลบรารี
เพิ่ม Places API (เดิม) ลงในรายการข้อจำกัด API ของคีย์ API
การใช้ข้อจำกัด API กับคีย์จะจำกัดการใช้คีย์ API กับ API หรือ SDK อย่างน้อย 1 รายการ ระบบจะประมวลผลคำขอไปยัง API หรือ SDK ที่เชื่อมโยงกับคีย์ API คำขอไปยัง API หรือ SDK ที่ไม่ได้เชื่อมโยงกับคีย์ API จะไม่สำเร็จ วิธีจำกัดคีย์ API สำหรับใช้กับ Places Library, Maps JavaScript API- ไปที่คอนโซล Google Cloud
- คลิกเมนูแบบเลื่อนลงของโปรเจ็กต์ แล้วเลือกโปรเจ็กต์ที่มีคีย์ API ที่ต้องการรักษาความปลอดภัย
- คลิกปุ่มเมนู
แล้วเลือก Google Maps Platform > ข้อมูลเข้าสู่ระบบ
- ในหน้าข้อมูลเข้าสู่ระบบ ให้คลิกชื่อคีย์ API ที่ต้องการรักษาความปลอดภัย
- ในหน้าจำกัดและเปลี่ยนชื่อคีย์ API ให้ตั้งค่าข้อจำกัดดังนี้
- ข้อจำกัด API
- เลือกจำกัดคีย์
- คลิกเลือก API แล้วเลือกทั้ง Maps JavaScript API และ Places API (เดิม)
(หากไม่เห็น API ใด API หนึ่งในรายการ คุณต้องเปิดใช้ API นั้น)
- คลิกบันทึก
ขีดจำกัดการใช้งานและนโยบาย
โควต้า
Places Library ใช้โควต้าการใช้งานร่วมกับ Places API ตามที่อธิบายไว้ในเอกสารประกอบเกี่ยวกับขีดจำกัดการใช้งานสำหรับ Places API
นโยบาย
การใช้ Places Library, Maps JavaScript API ต้องเป็นไปตามนโยบายที่อธิบายไว้สำหรับ Places API
การค้นหาสถานที่
บริการ Places ช่วยให้คุณทำการค้นหาประเภทต่อไปนี้ได้
- ค้นหาสถานที่จากคำค้นหา แสดงผลสถานที่ตามคำค้นหาที่เป็นข้อความ (เช่น ชื่อหรือที่อยู่ของสถานที่)
- ค้นหาสถานที่จากหมายเลขโทรศัพท์จะแสดงผลสถานที่ตามหมายเลขโทรศัพท์
- การค้นหาในบริเวณใกล้เคียง (เดิม) แสดงรายการสถานที่ใกล้เคียงตามตำแหน่งของผู้ใช้
- การค้นหาข้อความ (เดิม) จะแสดงรายการสถานที่ใกล้เคียงตามสตริงการค้นหา เช่น "Pizza"
- คำขอรายละเอียดสถานที่ (เดิม) จะแสดงข้อมูลที่ละเอียดยิ่งขึ้นเกี่ยวกับสถานที่ที่เฉพาะเจาะจง ซึ่งรวมถึงรีวิวจากผู้ใช้
ข้อมูลที่แสดงผลอาจรวมถึงสถานที่ประกอบการ เช่น ร้านอาหาร ร้านค้า และสำนักงาน ตลอดจนผลลัพธ์ "รหัสพิกัดภูมิศาสตร์" ซึ่งระบุที่อยู่ พื้นที่ทางการเมือง เช่น เมือง และจุดที่น่าสนใจอื่นๆ
คำขอค้นหาสถานที่ (เดิม)
คำขอค้นหาสถานที่ช่วยให้คุณค้นหาสถานที่ได้โดยใช้คำค้นหาที่เป็นข้อความหรือหมายเลขโทรศัพท์ คำขอค้นหาสถานที่มี 2 ประเภท ได้แก่
ค้นหาสถานที่จากคำค้นหา
ค้นหาสถานที่จากการค้นหาจะรับอินพุตข้อความและแสดงผลสถานที่ อินพุตอาจเป็นข้อมูลสถานที่ประเภทใดก็ได้ เช่น ชื่อหรือที่อยู่ของธุรกิจ หากต้องการส่งคำขอค้นหาสถานที่จากการค้นหา ให้เรียกใช้เมธอด findPlaceFromQuery() ของ PlacesService ซึ่งใช้พารามิเตอร์ต่อไปนี้
query(ต้องระบุ) สตริงข้อความที่จะค้นหา เช่น "ร้านอาหาร" หรือ "123 Main Street" ซึ่งต้องเป็นชื่อสถานที่ ที่อยู่ หรือหมวดหมู่ของสถานที่ประกอบการ อินพุตประเภทอื่นๆ อาจทำให้เกิดข้อผิดพลาดและไม่รับประกันว่าจะแสดงผลลัพธ์ที่ถูกต้อง Places API จะแสดงผลลัพธ์ที่ตรงกันซึ่งเป็นไปได้โดยอิงตามสตริงนี้ และจัดเรียงผลลัพธ์ตามความเกี่ยวข้องที่รับรู้fields(ต้องระบุ) ฟิลด์อย่างน้อย 1 ฟิลด์ที่ระบุประเภทข้อมูลสถานที่ที่จะแสดงผลlocationBias(ไม่บังคับ) พิกัดที่กำหนดพื้นที่ที่จะค้นหา ซึ่งอาจเป็นอย่างใดอย่างหนึ่งต่อไปนี้- ชุดพิกัดละติจูด/ลองจิจูดที่ระบุเป็น LatLngLiteral หรือออบเจ็กต์ LatLng
- ขอบเขตสี่เหลี่ยมผืนผ้า (คู่ละติจูด/ลองจิจูด 2 คู่ หรือออบเจ็กต์ LatLngBounds)
- รัศมี (เป็นเมตร) ที่มีศูนย์กลางอยู่ที่ละติจูด/ลองจิจูด
นอกจากนี้ คุณยังต้องส่งเมธอด Callback ไปยัง findPlaceFromQuery() เพื่อจัดการออบเจ็กต์ผลลัพธ์และการตอบกลับ google.maps.places.PlacesServiceStatus ด้วย
ตัวอย่างต่อไปนี้แสดงการเรียกใช้ findPlaceFromQuery() เพื่อค้นหา "Museum of Contemporary Art Australia" และรวมฟิลด์ name และ geometry
var map; var service; var infowindow; function initMap() { var sydney = new google.maps.LatLng(-33.867, 151.195); infowindow = new google.maps.InfoWindow(); map = new google.maps.Map( document.getElementById('map'), {center: sydney, zoom: 15}); var request = { query: 'Museum of Contemporary Art Australia', fields: ['name', 'geometry'], }; var service = new google.maps.places.PlacesService(map); service.findPlaceFromQuery(request, function(results, status) { if (status === google.maps.places.PlacesServiceStatus.OK) { for (var i = 0; i < results.length; i++) { createMarker(results[i]); } map.setCenter(results[0].geometry.location); } }); }
ค้นหาสถานที่จากหมายเลขโทรศัพท์
ค้นหาสถานที่จากหมายเลขโทรศัพท์จะใช้หมายเลขโทรศัพท์และแสดงผลสถานที่ หากต้องการส่งคำขอค้นหาสถานที่จากหมายเลขโทรศัพท์ ให้เรียกใช้เมธอด findPlaceFromPhoneNumber() ของ PlacesService ซึ่งใช้พารามิเตอร์ต่อไปนี้
phoneNumber(ต้องระบุ) หมายเลขโทรศัพท์ในรูปแบบ E.164fields(ต้องระบุ) ฟิลด์อย่างน้อย 1 ฟิลด์ที่ระบุประเภทข้อมูลสถานที่ที่จะแสดงผลlocationBias(ไม่บังคับ) พิกัดที่กำหนดพื้นที่ที่จะค้นหา ซึ่งอาจเป็นข้อมูลอย่างใดอย่างหนึ่งต่อไปนี้- ชุดพิกัดละติจูด/ลองจิจูดที่ระบุเป็น LatLngLiteral หรือออบเจ็กต์ LatLng
- ขอบเขตสี่เหลี่ยมผืนผ้า (จุดละติจูด/ลองจิจูด 4 จุด หรือออบเจ็กต์ LatLngBounds)
- รัศมี (เป็นเมตร) ที่มีศูนย์กลางอยู่ที่ละติจูด/ลองจิจูด
นอกจากนี้ คุณยังต้องส่งเมธอด Callback ไปยัง findPlaceFromPhoneNumber() เพื่อจัดการออบเจ็กต์ผลลัพธ์และการตอบกลับ google.maps.places.PlacesServiceStatus ด้วย
ฟิลด์ (เมธอด Find Place)
ใช้พารามิเตอร์ fields เพื่อระบุอาร์เรย์ของประเภทข้อมูลสถานที่ที่จะแสดงผล
ตัวอย่างเช่น fields: ['formatted_address', 'opening_hours', 'geometry']
ใช้จุดเมื่อระบุค่าผสม ตัวอย่างเช่น opening_hours.weekday_text
ช่องจะสอดคล้องกับผลการค้นหาสถานที่ และแบ่งออกเป็นหมวดหมู่การเรียกเก็บเงิน 3 หมวดหมู่ ได้แก่ พื้นฐาน ข้อมูลติดต่อ และบรรยากาศ ระบบจะเรียกเก็บเงินสำหรับช่องพื้นฐานในอัตราฐาน และไม่มีค่าใช้จ่ายเพิ่มเติม ระบบจะเรียกเก็บเงินค่าฟิลด์ Contact และ Atmosphere ในอัตราที่สูงขึ้น ดูข้อมูลเพิ่มเติมได้ที่แผ่นราคา ระบบจะแสดงการระบุแหล่งที่มา (html_attributions) ทุกครั้งที่มีการเรียกใช้ ไม่ว่าระบบจะขอฟิลด์หรือไม่ก็ตาม
Basic
หมวดหมู่พื้นฐานประกอบด้วยช่องต่อไปนี้
business_status, formatted_address, geometry,
icon,icon_mask_base_uri, icon_background_color,
name, permanently_closed (เลิกใช้งานแล้ว),
photos, place_id, plus_code, types
การติดต่อ
หมวดหมู่ข้อมูลติดต่อประกอบด้วยช่องต่อไปนี้opening_hours (เลิกใช้งานใน Places Library, Maps JavaScript API ใช้คำขอรายละเอียดสถานที่เพื่อรับผลลัพธ์
opening_hours)
บรรยากาศ
หมวดหมู่บรรยากาศประกอบด้วยช่องต่อไปนี้price_level, rating, user_ratings_total
เมธอด findPlaceFromQuery() และ findPlaceFromPhoneNumber() ต่างก็ใช้ชุดช่องเดียวกัน และสามารถแสดงผลช่องเดียวกันในการตอบกลับที่เกี่ยวข้องได้
ตั้งค่าการให้น้ำหนักสถานที่ (เมธอด Find Place)
ใช้พารามิเตอร์ locationBias เพื่อให้การค้นหาสถานที่แสดงผลลัพธ์ในพื้นที่ที่ต้องการ คุณตั้งค่า locationBias ได้ด้วยวิธีต่อไปนี้
กำหนดผลการค้นหาให้สอดคล้องกับพื้นที่ที่เฉพาะเจาะจง:
locationBias: {lat: 37.402105, lng: -122.081974}
กำหนดพื้นที่สี่เหลี่ยมผืนผ้าที่จะค้นหาดังนี้
locationBias: {north: 37.41, south: 37.40, east: -122.08, west: -122.09}
คุณยังใช้ LatLngBounds ได้ด้วย
กำหนดรัศมีที่จะค้นหา (เป็นเมตร) โดยมีศูนย์กลางอยู่ที่พื้นที่หนึ่งๆ
locationBias: {radius: 100, center: {lat: 37.402105, lng: -122.081974}}
คำขอการค้นหาในบริเวณใกล้เคียง
การค้นหาในบริเวณใกล้เคียงช่วยให้คุณค้นหาสถานที่ภายในพื้นที่ที่ระบุตามคีย์เวิร์ดหรือประเภทได้ การค้นหาในบริเวณใกล้เคียงต้องมีสถานที่ตั้งเสมอ ซึ่งสามารถระบุได้ 2 วิธีดังนี้
-
LatLngBounds - พื้นที่วงกลมที่กำหนดโดยการรวมพร็อพเพอร์ตี้
locationซึ่งระบุจุดศูนย์กลางของวงกลมเป็นออบเจ็กต์LatLngและรัศมีที่วัดเป็นเมตร
การค้นหาสถานที่ใกล้เคียงจะเริ่มต้นด้วยการเรียกเมธอด nearbySearch() ของ
PlacesService ซึ่งจะแสดงผลอาร์เรย์ของออบเจ็กต์
PlaceResult โปรดทราบว่าเมธอด nearbySearch() จะแทนที่เมธอด search() ตั้งแต่เวอร์ชัน 3.9 เป็นต้นไป
service = new google.maps.places.PlacesService(map); service.nearbySearch(request, callback);
เมธอดนี้จะรับคำขอที่มีฟิลด์ต่อไปนี้
- ข้อใดข้อหนึ่งต่อไปนี้
boundsซึ่งต้องเป็นออบเจ็กต์google.maps.LatLngBoundsที่กำหนดพื้นที่การค้นหารูปสี่เหลี่ยมผืนผ้า ระยะทางแนวทแยงสูงสุดที่รองรับสำหรับพื้นที่ขอบเขตคือประมาณ 100,000 เมตรlocationและradiusโดย จะรับออบเจ็กต์google.maps.LatLngและ จะรับจำนวนเต็ม ธรรมดาที่แสดงรัศมีของวงกลมเป็นเมตร รัศมีสูงสุดที่อนุญาตคือ 50,000 เมตร โปรดทราบว่าเมื่อตั้งค่าrankByเป็น DISTANCE คุณต้องระบุlocationแต่จะระบุradiusหรือboundsไม่ได้
keyword(ไม่บังคับ) - คำที่จะจับคู่กับช่องที่มีอยู่ทั้งหมด ซึ่งรวมถึงแต่ไม่จำกัดเพียงชื่อ ประเภท และที่อยู่ ตลอดจนรีวิวจากลูกค้าและเนื้อหาของบุคคลที่สามminPriceLevelและmaxPriceLevel(ไม่บังคับ) — จำกัดผลการค้นหาเฉพาะสถานที่ที่อยู่ภายในช่วงที่ระบุ ค่าที่ถูกต้องจะอยู่ระหว่าง 0 (ราคาถูกที่สุด) ถึง 4 (ราคาแพงที่สุด)nameเลิกใช้งานแล้ว เทียบเท่ากับkeywordค่าในช่องนี้จะรวมกับค่าในช่องkeywordและส่งเป็นส่วนหนึ่งของสตริงการค้นหาเดียวกันopenNow(ไม่บังคับ) - ค่าบูลีนที่ระบุว่าบริการ Places ควรแสดงเฉพาะสถานที่ที่เปิดให้บริการในขณะที่ส่งคำค้นหาเท่านั้น ระบบจะไม่แสดงสถานที่ที่ไม่ได้ระบุเวลาทำการในฐานข้อมูล Google Places หากคุณรวมพารามิเตอร์นี้ไว้ในการค้นหา การตั้งค่าopenNowเป็นfalseจะไม่มีผลrankBy(ไม่บังคับ) - ระบุลำดับที่แสดงผลลัพธ์ ค่าที่เป็นไปได้มีดังนี้google.maps.places.RankBy.PROMINENCE(ค่าเริ่มต้น) ตัวเลือกนี้จะจัดเรียงผลลัพธ์ตามความสำคัญ การจัดอันดับจะให้ความสำคัญกับสถานที่ที่โดดเด่นภายในรัศมีที่กำหนดมากกว่าสถานที่ใกล้เคียงที่ตรงกันแต่มีความโดดเด่นน้อยกว่า ความโดดเด่นอาจได้รับผลกระทบจากการจัดอันดับของสถานที่ในดัชนีของ Google, ความนิยมทั่วโลก และปัจจัยอื่นๆ เมื่อระบุgoogle.maps.places.RankBy.PROMINENCEคุณต้องระบุพารามิเตอร์radiusgoogle.maps.places.RankBy.DISTANCEตัวเลือกนี้จะจัดเรียงผลลัพธ์ตามลำดับจากน้อยไปหามากตามระยะทางจากlocationที่ระบุ (ต้องระบุ) โปรดทราบว่าคุณไม่สามารถระบุboundsและ/หรือradiusที่กำหนดเองได้หากระบุRankBy.DISTANCEเมื่อระบุRankBy.DISTANCEคุณต้องระบุkeyword,nameหรือtypeอย่างน้อย 1 รายการ
type— จำกัดผลการค้นหาเฉพาะสถานที่ที่ตรงกับประเภทที่ระบุ ระบุได้เพียงประเภทเดียว (หากระบุมากกว่า 1 ประเภท ระบบจะไม่สนใจประเภททั้งหมดที่ตามหลังรายการแรก) ดูรายการประเภทที่รองรับ
นอกจากนี้ คุณยังต้องส่งเมธอด Callback ไปยัง nearbySearch() เพื่อจัดการออบเจ็กต์ผลลัพธ์และการตอบกลับ google.maps.places.PlacesServiceStatus ด้วย
var map; var service; var infowindow; function initialize() { var pyrmont = new google.maps.LatLng(-33.8665433, 151.1956316); map = new google.maps.Map(document.getElementById('map'), { center: pyrmont, zoom: 15 }); var request = { location: pyrmont, radius: 500, type: 'restaurant' }; service = new google.maps.places.PlacesService(map); service.nearbySearch(request, callback); } function callback(results, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { for (var i = 0; i < results.length; i++) { createMarker(results[i]); } } }
คำขอการค้นหาข้อความ
บริการค้นหาข้อความของ Google Places เป็นบริการบนเว็บที่แสดงข้อมูลเกี่ยวกับชุดสถานที่ตามสตริง เช่น "พิซซ่าในนิวยอร์ก" หรือ "ร้านรองเท้าใกล้กรุงเทพ" บริการจะตอบกลับด้วยรายการสถานที่ที่ตรงกับสตริงข้อความและการให้น้ำหนักสถานที่ที่ตั้งไว้ การตอบกลับการค้นหาจะมีรายการสถานที่ คุณสามารถส่งคำขอรายละเอียดสถานที่เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับสถานที่ใดก็ได้ในการตอบกลับ
การค้นหาข้อความจะเริ่มต้นด้วยการเรียกใช้เมธอด textSearch() ของ PlacesService
service = new google.maps.places.PlacesService(map); service.textSearch(request, callback);
เมธอดนี้จะรับคำขอที่มีฟิลด์ต่อไปนี้
query(ต้องระบุ) สตริงข้อความที่จะค้นหา เช่น "ร้านอาหาร" หรือ "123 Main Street" ซึ่งต้องเป็นชื่อสถานที่ ที่อยู่ หรือหมวดหมู่ของสถานที่ประกอบการ อินพุตประเภทอื่นๆ อาจทำให้เกิดข้อผิดพลาดและไม่รับประกันว่าจะแสดงผลลัพธ์ที่ถูกต้อง บริการ Places จะแสดงผลลัพธ์ที่ตรงกันซึ่งเป็นไปได้โดยอิงตามสตริงนี้ และจัดเรียงผลลัพธ์ตามความเกี่ยวข้องที่รับรู้ พารามิเตอร์นี้จะกลายเป็นพารามิเตอร์ที่ไม่บังคับหากมีการใช้พารามิเตอร์typeในคำขอค้นหาด้วย- ไม่บังคับ:
openNow— ค่าบูลีนที่ระบุว่าบริการ Places ควรแสดงเฉพาะสถานที่ที่เปิดให้บริการในขณะที่ส่งคำค้นหาเท่านั้น ระบบจะไม่แสดงสถานที่ที่ไม่ได้ระบุเวลาทำการในฐานข้อมูล Google Places หากคุณรวมพารามิเตอร์นี้ไว้ในการค้นหา การตั้งค่าopenNowเป็นfalseจะไม่มีผลminPriceLevelและmaxPriceLevel- จำกัดผลการค้นหาเฉพาะสถานที่ที่อยู่ในระดับราคาที่ระบุ ค่าที่ถูกต้องอยู่ในช่วงตั้งแต่ 0 (ราคาถูกที่สุด) ถึง 4 (ราคาแพงที่สุด)- อย่างใดอย่างหนึ่งต่อไปนี้
boundsซึ่งต้องเป็นออบเจ็กต์google.maps.LatLngBoundsที่กำหนดพื้นที่การค้นหารูปสี่เหลี่ยมผืนผ้า ระยะทางแนวทแยงสูงสุดที่รองรับสำหรับพื้นที่ขอบเขตคือประมาณ 100,000 เมตรlocationและradius- คุณอาจให้น้ำหนักผลการค้นหาไปยังวงกลมที่ระบุได้โดยส่งพารามิเตอร์locationและradiusซึ่งจะสั่งให้บริการ Places แสดงผลลัพธ์ภายในวงกลมนั้น ผลลัพธ์ที่อยู่นอกพื้นที่ที่กำหนดอาจยังคงแสดงอยู่ ตำแหน่งจะใช้ออบเจ็กต์google.maps.LatLngและรัศมีจะใช้จำนวนเต็มธรรมดา ซึ่งแสดงรัศมีของวงกลมเป็นเมตร รัศมีสูงสุดที่อนุญาตคือ 50,000 เมตร
type— จำกัดผลการค้นหาเฉพาะสถานที่ที่ตรงกับประเภทที่ระบุ ระบุได้เพียงประเภทเดียวเท่านั้น (หากระบุมากกว่า 1 ประเภท ระบบจะไม่สนใจประเภททั้งหมดที่ตามหลังรายการแรก) ดูรายการประเภทที่รองรับ
นอกจากนี้ คุณยังต้องส่งเมธอด Callback ไปยัง textSearch() เพื่อจัดการออบเจ็กต์ผลลัพธ์และการตอบกลับ google.maps.places.PlacesServiceStatus ด้วย
var map; var service; var infowindow; function initialize() { var pyrmont = new google.maps.LatLng(-33.8665433,151.1956316); map = new google.maps.Map(document.getElementById('map'), { center: pyrmont, zoom: 15 }); var request = { location: pyrmont, radius: 500, query: 'restaurant' }; service = new google.maps.places.PlacesService(map); service.textSearch(request, callback); } function callback(results, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { for (var i = 0; i < results.length; i++) { var place = results[i]; createMarker(results[i]); } } }
คำตอบในการค้นหา
รหัสสถานะ
ออบเจ็กต์การตอบกลับ PlacesServiceStatus มีสถานะของคำขอ และอาจมีข้อมูลการแก้ไขข้อบกพร่องเพื่อช่วยคุณติดตามสาเหตุที่คำขอสถานที่ล้มเหลว ค่าสถานะที่เป็นไปได้มีดังนี้
INVALID_REQUEST: คำขอนี้ไม่ถูกต้องOK: การตอบกลับมีผลลัพธ์ที่ถูกต้องOVER_QUERY_LIMIT: หน้าเว็บมีคำขอเกินโควต้าREQUEST_DENIED: หน้าเว็บไม่ได้รับอนุญาตให้ใช้ PlacesServiceUNKNOWN_ERROR: ไม่สามารถประมวลผลคำขอ PlacesService ได้เนื่องจากข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์ คำขออาจสำเร็จหากคุณลองอีกครั้งZERO_RESULTS: ไม่พบผลลัพธ์สำหรับคำขอนี้
ผลการค้นหาสถานที่
ฟังก์ชัน findPlace(), nearbySearch() และ textSearch() จะแสดงผลอาร์เรย์ของออบเจ็กต์
PlaceResult
ออบเจ็กต์ PlaceResult แต่ละรายการอาจมีพร็อพเพอร์ตี้ต่อไปนี้
business_statusระบุสถานะการดำเนินการของสถานที่ หากเป็นธุรกิจ โดยอาจมีค่าใดค่าหนึ่งต่อไปนี้OPERATIONALCLOSED_TEMPORARILYCLOSED_PERMANENTLY
business_statusformatted_addressคือสตริงที่มีที่อยู่ที่มนุษย์อ่านได้ของสถานที่นี้ ระบบจะแสดงผลพร็อพเพอร์ตี้formatted_addressสำหรับการค้นหาข้อความเท่านั้นซึ่งมักจะเป็นที่อยู่เดียวกับที่อยู่ทางไปรษณีย์ โปรดทราบว่าบางประเทศ เช่น สหราชอาณาจักร ไม่อนุญาตให้เผยแพร่ที่อยู่ทางไปรษณีย์จริงเนื่องจากข้อจำกัดด้านการอนุญาตให้ใช้สิทธิ
ที่อยู่ที่มีการจัดรูปแบบจะประกอบด้วยคอมโพเนนต์ที่อยู่อย่างน้อย 1 รายการตามหลักตรรกะ เช่น ที่อยู่ "111 8th Avenue, New York, NY" ประกอบด้วยคอมโพเนนต์ต่อไปนี้ "111" (เลขที่ถนน) "8th Avenue" (เส้นทาง) "New York" (เมือง) และ "NY" (รัฐในสหรัฐอเมริกา)
อย่าแยกวิเคราะห์ที่อยู่ซึ่งจัดรูปแบบแล้วแบบเป็นโปรแกรม แต่คุณควรใช้คอมโพเนนต์ที่อยู่แต่ละรายการ ซึ่งการตอบกลับจาก API จะรวมไว้นอกเหนือจากช่องที่อยู่ที่จัดรูปแบบแล้ว
geometry: ข้อมูลที่เกี่ยวข้องกับเรขาคณิตของสถานที่ ซึ่งรวมถึงlocationระบุละติจูดและลองจิจูดของสถานที่viewportกำหนดวิวพอร์ตที่ต้องการบนแผนที่เมื่อดูสถานที่นี้
permanently_closed(เลิกใช้งานแล้ว) เป็นแฟล็กบูลีนที่ระบุว่าสถานที่ปิดถาวรหรือชั่วคราว (ค่าtrue) อย่าใช้permanently_closedแต่ให้ใช้business_statusเพื่อดูสถานะการดำเนินการของธุรกิจแทนplus_code(ดูรหัสตำแหน่งแบบเปิดและ Plus Codes) คือข้อมูลอ้างอิงตำแหน่งที่เข้ารหัสซึ่งได้มาจากพิกัดละติจูดและลองจิจูดที่แสดงพื้นที่: 1/8000 ขององศา คูณ 1/8000 ขององศา (ประมาณ 14 ม. x 14 ม. ที่เส้นศูนย์สูตร) หรือเล็กกว่านั้น Plus Codes สามารถใช้แทนที่อยู่บนถนนในสถานที่ที่ไม่มีที่อยู่ (ที่อาคารไม่มีหมายเลขหรือถนนไม่มีชื่อ)Plus Code จะอยู่ในรูปแบบรหัสสากลและรหัสผสม ดังนี้
global_codeคือรหัสพื้นที่ 4 หลักและรหัสท้องถิ่น 6 หลักขึ้นไป (849VCWC8+R9)compound_codeคือรหัสท้องถิ่น 6 หลักขึ้นไปที่มีการระบุตำแหน่งชัดเจน (CWC8+R9, Mountain View, CA, USA) อย่าแยกวิเคราะห์เนื้อหานี้แบบเป็นโปรแกรม
html_attributions: อาร์เรย์ของการระบุแหล่งที่มาที่คุณควรแสดงเมื่อแสดงผลการค้นหา แต่ละรายการในอาร์เรย์จะมีข้อความ HTML สำหรับการระบุแหล่งที่มาเดียว หมายเหตุ: นี่คือการรวมการระบุแหล่งที่มาทั้งหมดสำหรับการตอบกลับการค้นหาทั้งหมด ดังนั้นออบเจ็กต์PlaceResultทั้งหมดในการตอบกลับจึงมีรายการการระบุแหล่งที่มาที่เหมือนกันiconแสดงผล URL สำหรับไอคอน PNG สีขนาด 71 x 71 พิกเซลicon_mask_base_uriแสดงผล URL ฐานสำหรับไอคอนที่ไม่มีสี โดยไม่มีนามสกุล .svg หรือ .pngicon_background_colorแสดงรหัสสีแบบเลขฐาน 16 เริ่มต้นสำหรับหมวดหมู่ของสถานที่name: ชื่อสถานที่opening_hoursอาจมีข้อมูลต่อไปนี้open_nowคือค่าบูลีนที่ระบุว่าสถานที่เปิดอยู่ในเวลาปัจจุบันหรือไม่ (เลิกใช้งานใน Places Library, Maps JavaScript API แล้ว ให้ใช้utc_offset_minutesแทน)
place_idคือตัวระบุที่เป็นข้อความซึ่งระบุสถานที่หนึ่งๆ โดยไม่ซ้ำกัน หากต้องการดึงข้อมูลเกี่ยวกับสถานที่ ให้ส่งตัวระบุนี้ในคำขอรายละเอียดสถานที่ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีอ้างอิงสถานที่ด้วยรหัสสถานที่ratingมีคะแนนของสถานที่ตั้งแต่ 0.0 ถึง 5.0 โดยอิงตามรีวิวจากผู้ใช้ที่รวบรวมไว้typesอาร์เรย์ของประเภทสำหรับสถานที่นี้ (เช่น["political", "locality"]หรือ["restaurant", "lodging"]) อาร์เรย์นี้อาจมีหลายค่าหรืออาจว่างเปล่า ระบบอาจเพิ่มค่าใหม่โดยไม่ต้องแจ้งให้ทราบล่วงหน้า ดูรายการประเภทที่รองรับvicinity: ที่อยู่แบบย่อของสถานที่ ซึ่งรวมถึงชื่อถนน หมายเลขถนน และท้องถิ่น แต่ไม่รวมจังหวัด/รัฐ รหัสไปรษณีย์ หรือประเทศ เช่น สำนักงานของ Google ในซิดนีย์ ประเทศออสเตรเลียมีค่าvicinityเป็น5/48 Pirrama Road, Pyrmont
เข้าถึงผลลัพธ์เพิ่มเติม
โดยค่าเริ่มต้น การค้นหาสถานที่แต่ละครั้งจะแสดงผลการค้นหาสูงสุด 20 รายการต่อคำค้นหา อย่างไรก็ตาม การค้นหาแต่ละครั้งสามารถแสดงผลลัพธ์ได้สูงสุด 60 รายการ โดยแบ่งออกเป็น 3 หน้า
หน้าเพิ่มเติมจะพร้อมใช้งานโดยใช้ออบเจ็กต์ PlaceSearchPagination หากต้องการเข้าถึงหน้าเพิ่มเติม คุณต้องบันทึกออบเจ็กต์ PlaceSearchPagination โดยใช้ฟังก์ชัน Callback ออบเจ็กต์ PlaceSearchPagination มีคำจำกัดความดังนี้
hasNextPageพร็อพเพอร์ตี้บูลีนที่ระบุว่ามีผลลัพธ์เพิ่มเติมหรือไม่trueเมื่อมีหน้าผลการค้นหาเพิ่มเติมnextPage()ฟังก์ชันที่จะแสดงผลลัพธ์ชุดถัดไป หลังจากดำเนินการค้นหาแล้ว คุณต้องรอ 2 วินาทีก่อนที่ผลการค้นหาหน้าถัดไปจะพร้อมใช้งาน
หากต้องการดูผลการค้นหาชุดถัดไป ให้เรียกใช้ nextPage
ผลการค้นหาแต่ละหน้าต้องแสดงก่อนที่จะแสดงผลการค้นหาหน้าถัดไป โปรดทราบว่าการค้นหาแต่ละครั้งจะนับเป็นคำขอเดียวเทียบกับขีดจำกัดการใช้งานของคุณ
ตัวอย่างด้านล่างแสดงวิธีแก้ไขฟังก์ชัน Callback เพื่อบันทึกออบเจ็กต์ PlaceSearchPagination เพื่อให้คุณส่งคำขอการค้นหาหลายรายการได้
TypeScript
// This example requires the Places library. Include the libraries=places // parameter when you first load the API. For example: // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"> function initMap(): void { // Create the map. const pyrmont = { lat: -33.866, lng: 151.196 }; const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { center: pyrmont, zoom: 17, mapId: "8d193001f940fde3", } as google.maps.MapOptions ); // Create the places service. const service = new google.maps.places.PlacesService(map); let getNextPage: () => void | false; const moreButton = document.getElementById("more") as HTMLButtonElement; moreButton.onclick = function () { moreButton.disabled = true; if (getNextPage) { getNextPage(); } }; // Perform a nearby search. service.nearbySearch( { location: pyrmont, radius: 500, type: "store" }, ( results: google.maps.places.PlaceResult[] | null, status: google.maps.places.PlacesServiceStatus, pagination: google.maps.places.PlaceSearchPagination | null ) => { if (status !== "OK" || !results) return; addPlaces(results, map); moreButton.disabled = !pagination || !pagination.hasNextPage; if (pagination && pagination.hasNextPage) { getNextPage = () => { // Note: nextPage will call the same handler function as the initial call pagination.nextPage(); }; } } ); } function addPlaces( places: google.maps.places.PlaceResult[], map: google.maps.Map ) { const placesList = document.getElementById("places") as HTMLElement; for (const place of places) { if (place.geometry && place.geometry.location) { const image = { url: place.icon!, size: new google.maps.Size(71, 71), origin: new google.maps.Point(0, 0), anchor: new google.maps.Point(17, 34), scaledSize: new google.maps.Size(25, 25), }; new google.maps.Marker({ map, icon: image, title: place.name!, position: place.geometry.location, }); const li = document.createElement("li"); li.textContent = place.name!; placesList.appendChild(li); li.addEventListener("click", () => { map.setCenter(place.geometry!.location!); }); } } } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// This example requires the Places library. Include the libraries=places // parameter when you first load the API. For example: // <script src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&libraries=places"> function initMap() { // Create the map. const pyrmont = { lat: -33.866, lng: 151.196 }; const map = new google.maps.Map(document.getElementById("map"), { center: pyrmont, zoom: 17, mapId: "8d193001f940fde3", }); // Create the places service. const service = new google.maps.places.PlacesService(map); let getNextPage; const moreButton = document.getElementById("more"); moreButton.onclick = function () { moreButton.disabled = true; if (getNextPage) { getNextPage(); } }; // Perform a nearby search. service.nearbySearch( { location: pyrmont, radius: 500, type: "store" }, (results, status, pagination) => { if (status !== "OK" || !results) return; addPlaces(results, map); moreButton.disabled = !pagination || !pagination.hasNextPage; if (pagination && pagination.hasNextPage) { getNextPage = () => { // Note: nextPage will call the same handler function as the initial call pagination.nextPage(); }; } }, ); } function addPlaces(places, map) { const placesList = document.getElementById("places"); for (const place of places) { if (place.geometry && place.geometry.location) { const image = { url: place.icon, size: new google.maps.Size(71, 71), origin: new google.maps.Point(0, 0), anchor: new google.maps.Point(17, 34), scaledSize: new google.maps.Size(25, 25), }; new google.maps.Marker({ map, icon: image, title: place.name, position: place.geometry.location, }); const li = document.createElement("li"); li.textContent = place.name; placesList.appendChild(li); li.addEventListener("click", () => { map.setCenter(place.geometry.location); }); } } } window.initMap = initMap;
รายละเอียดสถานที่
นอกจากการแสดงรายการสถานที่ภายในพื้นที่แล้ว บริการ Places ยังแสดงข้อมูลโดยละเอียดเกี่ยวกับสถานที่ที่เฉพาะเจาะจงได้ด้วย เมื่อระบบแสดงสถานที่ในการตอบกลับการค้นหาสถานที่แล้ว คุณจะใช้รหัสสถานที่เพื่อขอรายละเอียดเพิ่มเติมเกี่ยวกับสถานที่นั้นได้ เช่น ที่อยู่แบบเต็ม หมายเลขโทรศัพท์ การให้คะแนนของผู้ใช้ และรีวิว เป็นต้น
คำขอรายละเอียดสถานที่
ระบบจะขอรายละเอียดสถานที่ด้วยการเรียกใช้เมธอด getDetails() ของบริการ
service = new google.maps.places.PlacesService(map); service.getDetails(request, callback);
เมธอดนี้จะรับคำขอซึ่งมี placeId ของสถานที่ และฟิลด์ที่ระบุประเภทข้อมูล Places ที่จะแสดงผล ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีอ้างอิงสถานที่ด้วยรหัสสถานที่
นอกจากนี้ยังใช้เมธอด Callback ซึ่งต้องจัดการรหัสสถานะที่ส่งมาในการตอบกลับ google.maps.places.PlacesServiceStatus รวมถึงออบเจ็กต์ google.maps.places.PlaceResult ด้วย
var request = { placeId: 'ChIJN1t_tDeuEmsRUsoyG83frY4', fields: ['name', 'rating', 'formatted_phone_number', 'geometry'] }; service = new google.maps.places.PlacesService(map); service.getDetails(request, callback); function callback(place, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { createMarker(place); } }
ฟิลด์ (รายละเอียดสถานที่)
พารามิเตอร์fields จะใช้อาร์เรย์ของสตริง (ชื่อฟิลด์)
ใช้พารามิเตอร์ fields เพื่อระบุอาร์เรย์ของประเภทข้อมูลสถานที่ที่จะแสดงผล
ตัวอย่างเช่น fields: ['address_components', 'opening_hours', 'geometry']
ใช้จุดเมื่อระบุค่าผสม ตัวอย่างเช่น opening_hours.weekday_text
ช่องต่างๆ จะสอดคล้องกับผลลัพธ์รายละเอียดสถานที่ และแบ่งออกเป็นหมวดหมู่การเรียกเก็บเงิน 3 หมวดหมู่ ได้แก่ พื้นฐาน ข้อมูลติดต่อ และบรรยากาศ ระบบจะเรียกเก็บเงินสำหรับช่องพื้นฐานในอัตราฐาน และจะไม่มีค่าใช้จ่ายเพิ่มเติม ระบบจะเรียกเก็บเงินสำหรับฟิลด์ข้อมูลติดต่อและบรรยากาศในอัตราที่สูงขึ้น ดูข้อมูลเพิ่มเติมได้ที่แผ่นราคา ระบบจะแสดงการระบุแหล่งที่มา (html_attributions) พร้อมกับการเรียกใช้ทุกครั้งเสมอ ไม่ว่าจะมีการขอหรือไม่ก็ตาม
Basic
หมวดหมู่พื้นฐานประกอบด้วยช่องต่อไปนี้
address_components, adr_address, business_status,
formatted_address, geometry, icon,
icon_mask_base_uri, icon_background_color,name,
permanently_closed (เลิกใช้งานแล้ว),
photo, place_id, plus_code, type,
url, utc_offset (เลิกใช้งานแล้ว
ใน Places Library, Maps JavaScript API), utc_offset_minutes,
vicinity
การติดต่อ
หมวดหมู่รายชื่อติดต่อประกอบด้วยช่องต่อไปนี้
formatted_phone_number, international_phone_number,
opening_hours, website
บรรยากาศ
หมวดหมู่บรรยากาศประกอบด้วยช่องต่อไปนี้
price_level, rating, reviews,
user_ratings_total
ดูข้อมูลเพิ่มเติมเกี่ยวกับช่องสถานที่ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีเรียกเก็บเงินสำหรับคำขอข้อมูลสถานที่ได้ที่การใช้งานและการเรียกเก็บเงิน
การตอบกลับรายละเอียดสถานที่
รหัสสถานะ
ออบเจ็กต์การตอบกลับ PlacesServiceStatus มีสถานะของคำขอ และอาจมีข้อมูลการแก้ไขข้อบกพร่องเพื่อช่วยคุณติดตามสาเหตุที่คำขอรายละเอียดสถานที่ล้มเหลว ค่าสถานะที่เป็นไปได้มีดังนี้
INVALID_REQUEST: คำขอนี้ไม่ถูกต้องOK: การตอบกลับมีผลลัพธ์ที่ถูกต้องOVER_QUERY_LIMIT: หน้าเว็บมีคำขอเกินโควต้าNOT_FOUNDไม่พบสถานที่ตั้งที่อ้างอิงในฐานข้อมูล PlacesREQUEST_DENIED: หน้าเว็บไม่ได้รับอนุญาตให้ใช้ PlacesServiceUNKNOWN_ERROR: ไม่สามารถประมวลผลคำขอ PlacesService ได้เนื่องจากข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์ คำขออาจสำเร็จหากคุณลองอีกครั้งZERO_RESULTS: ไม่พบผลลัพธ์สำหรับคำขอนี้
ผลลัพธ์รายละเอียดสถานที่
การเรียก getDetails() ที่สำเร็จจะแสดงผลออบเจ็กต์
PlaceResult ที่มีพร็อพเพอร์ตี้ต่อไปนี้
address_components: อาร์เรย์ที่มีองค์ประกอบแยกต่างหากที่ใช้กับที่อยู่นี้ได้โดยทั่วไปแล้ว คอมโพเนนต์ที่อยู่แต่ละรายการจะมีช่องต่อไปนี้
types[]คืออาร์เรย์ที่ระบุประเภทขององค์ประกอบที่อยู่ องค์ประกอบที่อยู่อาจมีอาร์เรย์ประเภทที่ว่างเปล่าเมื่อไม่มีประเภทที่รู้จักสำหรับองค์ประกอบที่อยู่นั้น API อาจเพิ่มค่าประเภทใหม่ตามความจำเป็น ดูข้อมูลเพิ่มเติมได้ที่ประเภทที่อยู่และประเภทองค์ประกอบที่อยู่long_nameคือคำอธิบายข้อความแบบเต็มหรือชื่อของคอมโพเนนต์ที่อยู่ตามที่โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์แสดงผลshort_nameคือชื่อแบบย่อขององค์ประกอบที่อยู่ (หากมี) ตัวอย่างเช่น คอมโพเนนต์ที่อยู่สำหรับรัฐอลาสกาอาจมีlong_nameเป็น "Alaska" และshort_nameเป็น "AK" โดยใช้ตัวย่อไปรษณีย์ 2 ตัวอักษร
โปรดทราบข้อเท็จจริงต่อไปนี้เกี่ยวกับอาร์เรย์
address_components[]- อาร์เรย์ของคอมโพเนนต์ที่อยู่อาจมีคอมโพเนนต์มากกว่า
formatted_address - อาร์เรย์ไม่จำเป็นต้องรวมหน่วยงานทางการเมืองทั้งหมดที่มีที่อยู่ นอกเหนือจากหน่วยงานที่รวมอยู่ใน
formatted_addressหากต้องการดึงข้อมูลหน่วยงานทางการเมืองทั้งหมดที่มีที่อยู่เฉพาะ คุณควรใช้การเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ โดยส่งละติจูด/ลองจิจูดของที่อยู่เป็นพารามิเตอร์ในคำขอ - รูปแบบการตอบกลับอาจเปลี่ยนแปลงได้ระหว่างคำขอ โดยเฉพาะอย่างยิ่ง จำนวน
address_componentsจะแตกต่างกันไปตามที่อยู่ที่ขอ และอาจเปลี่ยนแปลงเมื่อเวลาผ่านไปสำหรับที่อยู่เดียวกัน คอมโพเนนต์สามารถเปลี่ยนตำแหน่งในอาร์เรย์ได้ ประเภทของคอมโพเนนต์อาจเปลี่ยนแปลงได้ คอมโพเนนต์บางอย่างอาจหายไปในการตอบกลับในภายหลัง
business_statusระบุสถานะการดำเนินการของสถานที่ หากเป็นธุรกิจ โดยอาจมีค่าใดค่าหนึ่งต่อไปนี้OPERATIONALCLOSED_TEMPORARILYCLOSED_PERMANENTLY
business_statusformatted_address: ที่อยู่ที่มนุษย์อ่านได้ของสถานที่นี้ซึ่งมักจะเป็นที่อยู่เดียวกับที่อยู่ทางไปรษณีย์ โปรดทราบว่าบางประเทศ เช่น สหราชอาณาจักร ไม่อนุญาตให้เผยแพร่ที่อยู่ทางไปรษณีย์จริงเนื่องจากข้อจำกัดด้านการอนุญาตให้ใช้สิทธิ
ที่อยู่ที่มีการจัดรูปแบบจะประกอบด้วยคอมโพเนนต์ที่อยู่อย่างน้อย 1 รายการตามหลักตรรกะ เช่น ที่อยู่ "111 8th Avenue, New York, NY" ประกอบด้วยคอมโพเนนต์ต่อไปนี้ "111" (เลขที่ถนน) "8th Avenue" (เส้นทาง) "New York" (เมือง) และ "NY" (รัฐในสหรัฐอเมริกา)
อย่าแยกวิเคราะห์ที่อยู่ซึ่งจัดรูปแบบแล้วแบบเป็นโปรแกรม แต่คุณควรใช้คอมโพเนนต์ที่อยู่แต่ละรายการ ซึ่งการตอบกลับจาก API จะรวมไว้นอกเหนือจากช่องที่อยู่ที่จัดรูปแบบแล้ว
formatted_phone_number: หมายเลขโทรศัพท์ของสถานที่ซึ่งจัดรูปแบบตาม รูปแบบตามภูมิภาคของหมายเลขgeometry: ข้อมูลที่เกี่ยวข้องกับเรขาคณิตของสถานที่ ซึ่งรวมถึงlocationระบุละติจูดและลองจิจูดของสถานที่viewportกำหนดวิวพอร์ตที่ต้องการบนแผนที่เมื่อดูสถานที่นี้
permanently_closed(เลิกใช้งานแล้ว) เป็นแฟล็กบูลีนที่ระบุว่าสถานที่ปิดถาวรหรือชั่วคราว (ค่าtrue) อย่าใช้permanently_closedแต่ให้ใช้business_statusเพื่อดูสถานะการดำเนินการของธุรกิจแทนplus_code(ดูรหัสตำแหน่งแบบเปิดและ Plus Codes) คือการอ้างอิงตำแหน่งที่เข้ารหัสซึ่งได้มาจากพิกัดละติจูดและลองจิจูดที่แสดงพื้นที่: 1/8, 000 ขององศาต่อ 1/8, 000 ขององศา (ประมาณ 14 ม. x 14 ม. ที่เส้นศูนย์สูตร) หรือเล็กกว่านั้น Plus Codes สามารถใช้แทนที่อยู่บนถนนในสถานที่ที่ไม่มีที่อยู่ (ที่อาคารไม่มีหมายเลขหรือถนนไม่มีชื่อ)Plus Code จะอยู่ในรูปแบบรหัสสากลและรหัสผสม ดังนี้
global_codeคือรหัสพื้นที่ 4 หลักและรหัสท้องถิ่น 6 หลักขึ้นไป (849VCWC8+R9)compound_codeคือรหัสท้องถิ่น 6 หลักขึ้นไปที่มีการระบุตำแหน่งชัดเจน (CWC8+R9, Mountain View, CA, USA) อย่าแยกวิเคราะห์เนื้อหานี้แบบเป็นโปรแกรม
html_attributions: ข้อความแสดงแหล่งที่มาที่จะแสดงสำหรับผลการค้นหาสถานที่นี้icon: URL ของแหล่งข้อมูลรูปภาพที่ใช้แสดงประเภทของสถานที่นี้ได้international_phone_numberมีหมายเลขโทรศัพท์ของสถานที่ในรูปแบบระหว่างประเทศ รูปแบบระหว่างประเทศประกอบด้วยรหัสประเทศและขึ้นต้นด้วยเครื่องหมายบวก (+) ตัวอย่างเช่นinternational_phone_numberของสำนักงาน Google ในซิดนีย์ ประเทศออสเตรเลียคือ+61 2 9374 4000name: ชื่อสถานที่utc_offsetเลิกใช้งานใน Places Library, Maps JavaScript API ให้ใช้utc_offset_minutesแทนutc_offset_minutesมีจำนวนนาทีที่เขตเวลาปัจจุบันของสถานที่นี้ชดเชยจาก UTC เช่น สำหรับสถานที่ในซิดนีย์ ประเทศออสเตรเลีย ในช่วงเวลาออมแสง ค่านี้จะเป็น 660 (+11 ชั่วโมงจาก UTC) และสำหรับสถานที่ในแคลิฟอร์เนียนอกช่วงเวลาออมแสง ค่านี้จะเป็น -480 (-8 ชั่วโมงจาก UTC)opening_hoursมีข้อมูลต่อไปนี้open_now(เลิกใช้งานใน Places Library, Maps JavaScript API ให้ใช้ opening_hours.isOpen() แทน ดูวิธีใช้isOpenกับรายละเอียดสถานที่ได้ที่วิดีโอวิธีดูเวลาทำการใน Places API (เดิม)) `open_now` เป็นค่าบูลีนที่ระบุว่าสถานที่เปิดอยู่ในเวลาปัจจุบันหรือไม่periods[]คืออาร์เรย์ของช่วงเวลาเปิดทำการที่ครอบคลุม 7 วัน โดยเริ่มตั้งแต่วันอาทิตย์ตามลำดับเวลา แต่ละระยะเวลาประกอบด้วยข้อมูลต่อไปนี้openมีออบเจ็กต์วันและเวลาคู่หนึ่งที่อธิบายเวลาเปิดของสถานที่ ดังนี้dayตัวเลขตั้งแต่ 0-6 ซึ่งสอดคล้องกับวันในสัปดาห์ โดยเริ่มตั้งแต่วันอาทิตย์ เช่น 2 หมายถึงวันอังคารtimeอาจมีเวลาของวันในรูปแบบ hhmm แบบ 24 ชั่วโมง (ค่าอยู่ในช่วง 0000–2359) ระบบจะรายงานtimeในเขตเวลาของสถานที่
closeอาจมีออบเจ็กต์วันและเวลาคู่หนึ่งที่อธิบายเวลาที่สถานที่ปิดทำการ หมายเหตุ: หากสถานที่เปิดตลอดเวลา ส่วนcloseจะหายไปจากการตอบกลับ แอปพลิเคชันสามารถใช้การเปิดตลอดเวลาซึ่งแสดงเป็นระยะเวลาopenที่มีdayที่มีค่าเป็น 0 และtimeที่มีค่าเป็น 0000 และไม่มีclose
weekday_textคืออาร์เรย์ของสตริง 7 รายการที่แสดงเวลาทำการที่จัดรูปแบบแล้วสำหรับแต่ละวันในสัปดาห์ หากมีการระบุพารามิเตอร์languageในคำขอรายละเอียดสถานที่ บริการ Places จะจัดรูปแบบและแปลเวลาทำการให้เหมาะสมกับภาษานั้น การจัดลำดับองค์ประกอบในอาร์เรย์นี้ขึ้นอยู่กับพารามิเตอร์languageบางภาษาจะเริ่มสัปดาห์ในวันจันทร์ ขณะที่บางภาษาจะเริ่มในวันอาทิตย์
permanently_closed(เลิกใช้งานแล้ว) เป็นแฟล็กบูลีนที่ระบุว่าสถานที่ปิดถาวรหรือชั่วคราว (ค่าtrue) อย่าใช้permanently_closedแต่ให้ใช้business_statusเพื่อดูสถานะการดำเนินการของธุรกิจแทนphotos[]: อาร์เรย์ของออบเจ็กต์PlacePhotoคุณสามารถใช้PlacePhotoเพื่อรับรูปภาพด้วยเมธอดgetUrl()หรือตรวจสอบออบเจ็กต์เพื่อหาค่าต่อไปนี้ได้height: ความสูงสูงสุดของรูปภาพเป็นพิกเซลwidth: ความกว้างสูงสุดของรูปภาพเป็นพิกเซลhtml_attributions: ข้อความแสดงแหล่งที่มาที่จะแสดงพร้อมกับรูปภาพของสถานที่นี้
place_id: ตัวระบุข้อความที่ระบุสถานที่โดยไม่ซ้ำกัน และสามารถใช้เพื่อดึงข้อมูลเกี่ยวกับสถานที่โดยใช้คำขอรายละเอียดสถานที่ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีอ้างอิงสถานที่ด้วยรหัสสถานที่rating: คะแนนของสถานที่ ตั้งแต่ 0.0 ถึง 5.0 โดยอิงตามรีวิวจากผู้ใช้ที่รวบรวมมาreviewsอาร์เรย์ของรีวิวสูงสุด 5 รายการ การตรวจสอบแต่ละครั้งประกอบด้วยองค์ประกอบหลายอย่าง ดังนี้aspects[]มีอาร์เรย์ของออบเจ็กต์PlaceAspectRatingซึ่งแต่ละออบเจ็กต์จะให้คะแนนแอตทริบิวต์เดียวของสถานที่ประกอบธุรกิจ ออบเจ็กต์แรกในอาร์เรย์จะถือเป็นลักษณะหลักPlaceAspectRatingแต่ละรายการมีคำจำกัดความดังนี้typeชื่อของแง่มุมที่มีการให้คะแนน ประเภทที่รองรับ ได้แก่appeal,atmosphere,decor,facilities,food,overall,qualityและserviceratingคะแนนของผู้ใช้สำหรับแง่มุมนี้โดยเฉพาะ ตั้งแต่ 0 ถึง 3
author_nameชื่อของผู้ใช้ที่ส่งรีวิว รีวิวที่ไม่ระบุตัวตนจะระบุว่าเป็นของ "ผู้ใช้ Google" หากมีการตั้งค่าพารามิเตอร์ภาษา วลี "ผู้ใช้ Google" จะแสดงสตริงที่แปลแล้วauthor_urlURL ไปยังโปรไฟล์ Google+ ของผู้ใช้ (หากมี)languageรหัสภาษา IETF ที่ระบุภาษาที่ใช้ในรีวิวของผู้ใช้ ช่องนี้มีเฉพาะแท็กภาษาหลักเท่านั้น และไม่มีแท็กรองที่ระบุประเทศหรือภูมิภาค ตัวอย่างเช่น รีวิวภาษาอังกฤษทั้งหมดจะติดแท็กเป็น "en" ไม่ใช่ "en-AU" หรือ "en-UK"ratingคะแนนโดยรวมของผู้ใช้สำหรับสถานที่นี้ ซึ่งเป็นจำนวนเต็มตั้งแต่ 1 ถึง 5textรีวิวของผู้ใช้ เมื่อตรวจสอบสถานที่ด้วย Google Places ระบบจะถือว่ารีวิวแบบข้อความเป็นตัวเลือก ดังนั้นช่องนี้จึงอาจว่างเปล่า
typesอาร์เรย์ของประเภทสำหรับสถานที่นี้ (เช่น["political", "locality"]หรือ["restaurant", "lodging"]) อาร์เรย์นี้อาจมีหลายค่าหรืออาจว่างเปล่า เราอาจเพิ่มค่าใหม่โดยไม่ต้องแจ้งให้ทราบล่วงหน้า ดูรายการประเภทที่รองรับurl: URL ของหน้า Google อย่างเป็นทางการสำหรับสถานที่นี้ นี่คือหน้าเว็บที่ Google เป็นเจ้าของซึ่งมีข้อมูลที่ดีที่สุดเกี่ยวกับสถานที่นั้นๆ แอปพลิเคชันต้องลิงก์หรือฝังหน้านี้ในหน้าจอใดก็ตามที่แสดงผลลัพธ์โดยละเอียดเกี่ยวกับสถานที่ต่อผู้ใช้vicinity: ที่อยู่แบบย่อของสถานที่ ซึ่งรวมถึงชื่อถนน หมายเลขถนน และท้องถิ่น แต่ไม่รวมจังหวัด/รัฐ รหัสไปรษณีย์ หรือประเทศ เช่น สำนักงานของ Google ในซิดนีย์ ประเทศออสเตรเลียมีค่าvicinityเป็น5/48 Pirrama Road, Pyrmontระบบจะแสดงผลพร็อพเพอร์ตี้vicinityสำหรับการค้นหาในบริเวณใกล้เคียงเท่านั้นwebsiteแสดงเว็บไซต์ที่เชื่อถือได้สำหรับสถานที่นี้ เช่น หน้าแรกของธุรกิจ
หมายเหตุ: คะแนนหลายมิติอาจไม่พร้อมใช้งานสำหรับบางสถานที่ หากมีรีวิวน้อยเกินไป การตอบกลับรายละเอียดจะมีคะแนนเดิมในระดับ 0.0 ถึง 5.0 (หากมี) หรือไม่มีคะแนนเลย
อ้างอิงสถานที่ด้วยรหัสสถานที่
รหัสสถานที่เป็นข้อมูลอ้างอิงที่ไม่ซ้ำกันสำหรับสถานที่ใน Google Maps รหัสสถานที่มีให้บริการสำหรับสถานที่ส่วนใหญ่ ซึ่งรวมถึงธุรกิจ จุดสังเกต สวนสาธารณะ และทางแยก
หากต้องการใช้รหัสสถานที่ในแอป คุณต้องค้นหารหัสก่อน ซึ่งจะอยู่ใน PlaceResult ของคำขอการค้นหาสถานที่หรือรายละเอียด
จากนั้นคุณจะใช้รหัสสถานที่นี้เพื่อค้นหารายละเอียดสถานที่ได้
รหัสสถานที่จะได้รับการยกเว้นจากข้อจำกัดการแคชที่ระบุไว้ในส่วนที่ 3.2.3(ข) ของข้อกำหนดในการให้บริการของ Google Maps Platform ดังนั้น คุณจึงจัดเก็บค่ารหัสสถานที่ไว้ใช้ในภายหลังได้ ดูแนวทางปฏิบัติแนะนำในการจัดเก็บรหัสสถานที่ได้ที่ภาพรวมของรหัสสถานที่
var map; function initialize() { // Create a map centered in Pyrmont, Sydney (Australia). map = new google.maps.Map(document.getElementById('map'), { center: {lat: -33.8666, lng: 151.1958}, zoom: 15 }); // Search for Google's office in Australia. var request = { location: map.getCenter(), radius: '500', query: 'Google Sydney' }; var service = new google.maps.places.PlacesService(map); service.textSearch(request, callback); } // Checks that the PlacesServiceStatus is OK, and adds a marker // using the place ID and location from the PlacesService. function callback(results, status) { if (status == google.maps.places.PlacesServiceStatus.OK) { var marker = new google.maps.Marker({ map: map, place: { placeId: results[0].place_id, location: results[0].geometry.location } }); } } google.maps.event.addDomListener(window, 'load', initialize);
รูปภาพสถานที่
ใช้ฟีเจอร์ Place Photo เพื่อเพิ่มเนื้อหาภาพถ่ายคุณภาพสูงลงในเว็บไซต์ บริการรูปภาพช่วยให้คุณเข้าถึงรูปภาพนับล้านที่จัดเก็บไว้ในฐานข้อมูล Places และ Google+ Local เมื่อคุณได้รับข้อมูลสถานที่โดยใช้คำขอรายละเอียดสถานที่ ระบบจะแสดงผลข้อมูลอ้างอิงรูปภาพสำหรับเนื้อหาภาพถ่ายที่เกี่ยวข้อง คำขอการค้นหาในบริเวณใกล้เคียงและการค้นหาข้อความจะแสดงข้อมูลอ้างอิงรูปภาพเดียวต่อสถานที่ด้วย (หากเกี่ยวข้อง) จากนั้นคุณจะเข้าถึงรูปภาพที่อ้างอิงและปรับขนาดรูปภาพให้เหมาะสมกับแอปพลิเคชันได้โดยใช้บริการรูปภาพ
ระบบจะแสดงผลอาร์เรย์ของออบเจ็กต์ PlacePhoto เป็นส่วนหนึ่งของออบเจ็กต์ PlaceResult สำหรับคำขอ getDetails(), textSearch() หรือ nearbySearch() ที่ส่งไปยัง PlacesService
หมายเหตุ: จำนวนรูปภาพที่แสดงผลจะแตกต่างกันไปตามคำขอ
- การค้นหาในบริเวณใกล้เคียงหรือการค้นหาข้อความจะแสดงออบเจ็กต์
PlacePhotoอย่างมาก 1 รายการ - คำขอรายละเอียดจะแสดงผลออบเจ็กต์
PlacePhotoสูงสุด 10 รายการ
คุณขอ URL สำหรับรูปภาพที่เชื่อมโยงได้โดยเรียกใช้เมธอด PlacePhoto.getUrl() และส่งออบเจ็กต์ PhotoOptions ที่ถูกต้อง ใช้ออบเจ็กต์ PhotoOptions เพื่อระบุความสูงและความกว้างสูงสุดของรูปภาพ หากคุณระบุค่าสำหรับทั้ง maxHeight และ maxWidth บริการรูปภาพจะปรับขนาดรูปภาพให้เป็นขนาดที่เล็กกว่าจากทั้ง 2 ขนาด โดยยังคงสัดส่วนภาพเดิมไว้
ข้อมูลโค้ดต่อไปนี้ยอมรับออบเจ็กต์สถานที่ และเพิ่มเครื่องหมายลงในแผนที่หากมีรูปภาพ รูปภาพเครื่องหมายเริ่มต้นจะถูกแทนที่ด้วยรูปภาพเวอร์ชันขนาดเล็ก
function createPhotoMarker(place) { var photos = place.photos; if (!photos) { return; } var marker = new google.maps.Marker({ map: map, position: place.geometry.location, title: place.name, icon: photos[0].getUrl({maxWidth: 35, maxHeight: 35}) }); }
รูปภาพที่แสดงโดยบริการรูปภาพมาจากหลายแหล่งที่มา ซึ่งรวมถึงรูปภาพจากเจ้าของธุรกิจและรูปภาพที่ผู้ใช้มีส่วนร่วม ในกรณีส่วนใหญ่ คุณสามารถใช้รูปภาพเหล่านี้ได้โดยไม่ต้องระบุแหล่งที่มา หรือจะมีการระบุแหล่งที่มาที่จำเป็นรวมเป็นส่วนหนึ่งของรูปภาพอยู่แล้ว อย่างไรก็ตาม หากองค์ประกอบ photo ที่แสดงผลมีค่าในช่อง html_attributions คุณต้องระบุการระบุแหล่งที่มาเพิ่มเติมในแอปพลิเคชันทุกที่ที่แสดงรูปภาพ