ภาพรวม
ฟังก์ชันในไลบรารี Places ของ Maps JavaScript API ช่วยให้แอปพลิเคชันของคุณ ค้นหาสถานที่ (กำหนดไว้ใน API นี้เป็นสถานประกอบการ สถานที่ตั้งทางภูมิศาสตร์ หรือจุดที่น่าสนใจที่โดดเด่น) ที่อยู่ในพื้นที่ที่กำหนด เช่น ขอบเขตของแผนที่ หรือรอบจุดคงที่
Places API มีฟีเจอร์เติมข้อความอัตโนมัติที่คุณใช้ เพื่อให้แอปพลิเคชันมีลักษณะการค้นหาแบบพิมพ์ล่วงหน้าของช่องค้นหาใน Google Maps ได้ เมื่อผู้ใช้เริ่มพิมพ์ที่อยู่ ฟีเจอร์เติมข้อความอัตโนมัติจะ กรอกส่วนที่เหลือให้ ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบการเติมข้อความอัตโนมัติ
เริ่มต้นใช้งาน
หากคุณไม่คุ้นเคยกับ JavaScript API ของ Maps หรือ 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 หนึ่งอยู่ในรายการ คุณต้องเปิดใช้)
- คลิกบันทึก
ขีดจำกัดและนโยบายการใช้งาน
โควต้า
Places Library ใช้โควต้าการใช้งานร่วมกับ Places API ตามที่อธิบายไว้ในเอกสารประกอบเกี่ยวกับขีดจำกัดการใช้งานสำหรับ Places API
นโยบาย
การใช้ Places Library, Maps JavaScript API ต้องเป็นไปตาม นโยบายที่อธิบาย สำหรับ Places API
การค้นหาสถานที่
บริการ Places ช่วยให้คุณค้นหาได้หลายประเภทดังนี้
- ค้นหาสถานที่จากคำค้นหา แสดงสถานที่ตามคำค้นหาที่เป็นข้อความ (เช่น ชื่อหรือที่อยู่ของ สถานที่)
- ค้นหาสถานที่จากหมายเลขโทรศัพท์จะแสดงผลสถานที่ตามหมายเลขโทรศัพท์
- การค้นหาใกล้เคียง แสดงรายการสถานที่ใกล้เคียงตามตำแหน่งของผู้ใช้
- การค้นหาข้อความ แสดงผลรายการสถานที่ใกล้เคียงตามสตริงการค้นหา เช่น "พิซซ่า"
- คำขอรายละเอียดสถานที่ จะแสดงข้อมูลโดยละเอียดเพิ่มเติมเกี่ยวกับสถานที่ที่เฉพาะเจาะจง ซึ่งรวมถึง รีวิวจากผู้ใช้
ข้อมูลที่แสดงอาจรวมถึงสถานประกอบการ เช่น ร้านอาหาร ร้านค้า และสำนักงาน รวมถึงผลลัพธ์ "รหัสพิกัดภูมิศาสตร์" ซึ่ง ระบุที่อยู่ พื้นที่ทางการเมือง เช่น เมืองและนคร และจุดที่น่าสนใจอื่นๆ
คำขอค้นหาสถานที่
คำขอ Find Place ช่วยให้คุณค้นหาสถานที่ได้ทั้งโดยใช้ข้อความค้นหาหรือ หมายเลขโทรศัพท์ คำขอ Find Place มี 2 ประเภท ได้แก่
ค้นหาสถานที่จากคำค้นหา
Find Place from Query รับอินพุตข้อความและแสดงผลสถานที่ ข้อมูลที่ป้อนอาจเป็นข้อมูลสถานที่ประเภทใดก็ได้ เช่น ชื่อธุรกิจหรือที่อยู่ หากต้องการส่งคำขอ
ค้นหาสถานที่จากคำค้นหา ให้เรียกใช้เมธอด PlacesService's
findPlaceFromQuery()
ซึ่งใช้พารามิเตอร์ต่อไปนี้
query(ต้องระบุ) สตริงข้อความที่จะค้นหา เช่น "ร้านอาหาร" หรือ "123 ถนนเมน" ต้องเป็นชื่อสถานที่ ที่อยู่ หรือหมวดหมู่ของสถานประกอบการ อินพุตประเภทอื่นๆ อาจทำให้เกิดข้อผิดพลาดและไม่รับประกันว่าจะแสดงผลลัพธ์ที่ถูกต้อง 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
ฟิลด์ (วิธีการค้นหาสถานที่)
ใช้พารามิเตอร์ fields เพื่อระบุอาร์เรย์ของประเภทข้อมูลสถานที่ที่จะแสดงผล
ตัวอย่างเช่น fields: ['formatted_address', 'opening_hours', 'geometry']
ใช้จุดเมื่อระบุค่าผสม ตัวอย่างเช่น opening_hours.weekday_text
ฟิลด์จะสอดคล้องกับผลการค้นหาสถานที่ และแบ่งออกเป็น
หมวดหมู่การเรียกเก็บเงิน 3 หมวดหมู่ ได้แก่ ข้อมูลพื้นฐาน ข้อมูลติดต่อ และบรรยากาศ ระบบจะเรียกเก็บเงินสำหรับฟิลด์พื้นฐานตามอัตราฐาน และไม่มีค่าใช้จ่ายเพิ่มเติม ระบบจะเรียกเก็บเงินสำหรับฟิลด์ Contact และ Atmosphere
ในอัตราที่สูงขึ้น ดูข้อมูลเพิ่มเติมได้ที่ตารางราคา
ระบบจะแสดงการระบุแหล่งที่มา (html_attributions) ทุกครั้งที่เรียกใช้ ไม่ว่ามีการขอฟิลด์หรือไม่ก็ตาม
พื้นฐาน
หมวดหมู่พื้นฐานประกอบด้วยช่องต่อไปนี้
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() แต่ละเมธอดใช้ชุดฟิลด์เดียวกัน และสามารถแสดงฟิลด์เดียวกันในคำตอบที่เกี่ยวข้องได้
ตั้งค่าอคติของสถานที่ (วิธีการค้นหาสถานที่)
ใช้พารามิเตอร์ locationBias เพื่อให้ Find Place แสดงผลลัพธ์ในพื้นที่หนึ่งๆ คุณตั้งค่า 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]); } } }
คำตอบใน Search
รหัสสถานะ
ออบเจ็กต์การตอบกลับ 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สำหรับ Text Search เท่านั้นโดยส่วนใหญ่แล้วที่อยู่นี้จะเทียบเท่ากับที่อยู่ทางไปรษณีย์ โปรดทราบว่าบางประเทศ เช่น สหราชอาณาจักร ไม่อนุญาตให้เผยแพร่ที่อยู่ไปรษณีย์จริงเนื่องจากข้อจำกัดด้านการอนุญาตให้ใช้สิทธิ
ที่อยู่ที่จัดรูปแบบแล้วประกอบด้วยคอมโพเนนต์ที่อยู่อย่างน้อย 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(ดูOpen Location Code และ Plus Code) คือการอ้างอิงตำแหน่งที่เข้ารหัสซึ่งได้มาจากพิกัดละติจูดและลองจิจูด ซึ่งแสดงถึงพื้นที่ขนาด 1/8000 ขององศาต่อ 1/8000 ขององศา (ประมาณ 14 ม. x 14 ม. ที่เส้นศูนย์สูตร) หรือเล็กกว่า คุณใช้ Plus Codes แทน ที่อยู่ได้ในสถานที่ที่ไม่มีที่อยู่ (ไม่มีการกำหนดหมายเลขอ้างอิงอาคารหรือ ไม่มีการตั้งชื่อถนน)Plus Codes มีรูปแบบเป็นรหัสสากลและรหัสผสม ดังนี้
global_codeคือรหัสพื้นที่ 4 หลักและรหัสท้องถิ่น 6 หลักขึ้นไป (849VCWC8+R9)compound_codeคือรหัสท้องถิ่น 6 หลักขึ้นไปที่มีการระบุตำแหน่งชัดเจน (CWC8+R9, Mountain View, CA, USA) อย่าแยกวิเคราะห์เนื้อหานี้โดยอัตโนมัติ
html_attributions: อาร์เรย์ของการระบุแหล่งที่มาที่คุณควร แสดงเมื่อแสดงผลการค้นหา แต่ละรายการในอาร์เรย์จะมี ข้อความ HTML สำหรับการระบุแหล่งที่มาเดียว หมายเหตุ: นี่คือ การรวบรวมการระบุแหล่งที่มาทั้งหมดสําหรับการตอบกลับการค้นหาทั้งหมด ดังนั้นออบเจ็กต์PlaceResultทั้งหมดในคำตอบจึงมี รายการการระบุแหล่งที่มาเหมือนกันiconจะแสดงผล URL สำหรับไอคอน PNG ขนาด 71x71 พิกเซลแบบมีสีicon_mask_base_uriจะแสดงผล URL ฐานสำหรับไอคอนที่ไม่ใช่สี โดยไม่รวมนามสกุล .svg หรือ .pngicon_background_colorจะแสดงรหัสสี HEX เริ่มต้นสำหรับ หมวดหมู่ของสถานที่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 ของสถานที่ และฟิลด์ที่ระบุประเภทข้อมูลสถานที่ที่จะแสดงผล ดูข้อมูลเพิ่มเติมเกี่ยวกับ
วิธีอ้างอิงสถานที่ด้วยรหัสสถานที่
นอกจากนี้ ยังใช้เมธอดเรียกกลับซึ่งต้องจัดการรหัสสถานะที่ส่งผ่าน
ในการตอบกลับ 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) ทุกครั้งที่มีการเรียกใช้ ไม่ว่าจะมีการขอหรือไม่ก็ตาม
พื้นฐาน
หมวดหมู่พื้นฐานประกอบด้วยฟิลด์ต่อไปนี้
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คือคำอธิบายข้อความแบบเต็มหรือชื่อของ คอมโพเนนต์ที่อยู่ตามที่ Geocoder แสดงผล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(ดูOpen Location Code และ Plus Code) คือการอ้างอิงตำแหน่งที่เข้ารหัสซึ่งได้มาจากพิกัดละติจูดและลองจิจูด ซึ่งแสดงถึงพื้นที่ขนาด 1/8000 ขององศาต่อ 1/8000 ขององศา (ประมาณ 14 ม. x 14 ม. ที่เส้นศูนย์สูตร) หรือเล็กกว่า คุณใช้ Plus Codes แทน ที่อยู่ได้ในสถานที่ที่ไม่มีที่อยู่ (ไม่มีการกำหนดหมายเลขอ้างอิงอาคารหรือ ไม่มีการตั้งชื่อถนน)Plus Codes มีรูปแบบเป็นรหัสสากลและรหัสผสม ดังนี้
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มีออบเจ็กต์วันที่และเวลา 2 รายการ ที่อธิบายเวลาเปิดทำการของสถานที่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 ของคำขอ Place Search หรือคำขอรายละเอียด
จากนั้นคุณจะใช้รหัสสถานที่นี้เพื่อค้นหา
รายละเอียด
สถานที่ได้
รหัสสถานที่จะได้รับการยกเว้นจากข้อจำกัดในการแคชที่ระบุไว้ ในส่วน 3.2.3(b) ของ ข้อกำหนดในการให้บริการของ Google Maps Platform ดังนั้นคุณจึงจัดเก็บค่ารหัสสถานที่เพื่อใช้ในภายหลังได้ ดูแนวทางปฏิบัติแนะนำในการจัดเก็บ Place ID ได้ที่ภาพรวมของ Place ID
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);
รูปภาพสถานที่
ใช้ฟีเจอร์รูปภาพสถานที่เพื่อเพิ่มเนื้อหาภาพถ่ายคุณภาพสูงลงในเว็บไซต์ บริการรูปภาพช่วยให้คุณเข้าถึงรูปภาพนับล้านที่จัดเก็บไว้ในฐานข้อมูลของสถานที่และ Google+ ท้องถิ่นได้ เมื่อคุณได้รับข้อมูลสถานที่ โดยใช้คำขอรายละเอียดสถานที่ ระบบจะแสดงผลการอ้างอิงรูปภาพ สำหรับเนื้อหาภาพถ่ายที่เกี่ยวข้อง คำขอการค้นหาใกล้เคียง และคำขอการค้นหาข้อความจะแสดงการอ้างอิงรูปภาพเดียวต่อสถานที่ด้วย เมื่อ เกี่ยวข้อง เมื่อใช้บริการรูปภาพ คุณจะเข้าถึงรูปภาพที่อ้างอิงและปรับขนาดรูปภาพให้มีขนาดที่เหมาะสมที่สุดสำหรับแอปพลิเคชันได้
ระบบจะแสดงผลอาร์เรย์ของออบเจ็กต์ 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 คุณต้องระบุแหล่งที่มาเพิ่มเติมในแอปพลิเคชันทุกที่ที่แสดงรูปภาพ