ภาพรวม
ฟังก์ชันในไลบรารีสถานที่ของ Maps JavaScript API ช่วยให้แอปพลิเคชันค้นหาสถานที่ (ซึ่งใน API นี้หมายถึงสถานประกอบการ สถานที่ตั้งทางภูมิศาสตร์ หรือจุดที่น่าสนใจที่โดดเด่น) ภายในพื้นที่ที่กำหนด เช่น ขอบเขตของแผนที่ หรือรอบๆ จุดคงที่
Places API มีฟีเจอร์เติมข้อความอัตโนมัติที่คุณสามารถใช้เพื่อทำให้แอปพลิเคชันมีลักษณะการค้นหาแบบพิมพ์ล่วงหน้าของช่องค้นหา Google Maps เมื่อผู้ใช้เริ่มพิมพ์ที่อยู่ ระบบจะป้อนข้อความที่เหลือให้โดยอัตโนมัติ ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบฟีเจอร์เติมข้อความอัตโนมัติ
เริ่มต้นใช้งาน
หากคุณไม่คุ้นเคยกับ Maps JavaScript API หรือ JavaScript เราขอแนะนำให้อ่าน JavaScript และรับคีย์ API ก่อนเริ่มต้นใช้งาน
เปิดใช้ API
ก่อนใช้ไลบรารี Places ใน Maps JavaScript API ก่อนอื่นให้ตรวจสอบว่าได้เปิดใช้ Places API ในคอนโซล Google Cloud ในโปรเจ็กต์เดียวกับที่คุณตั้งค่าไว้สําหรับ Maps JavaScript API
วิธีดูรายการ API ที่เปิดใช้
- ไปที่คอนโซล Google Cloud
- คลิกปุ่มเลือกโปรเจ็กต์ จากนั้นเลือกโปรเจ็กต์เดียวกับที่คุณตั้งค่าไว้สําหรับ Maps JavaScript API แล้วคลิกเปิด
- จากรายการ API ในหน้าแดชบอร์ด ให้มองหา Places API
- หากเห็น Places API ในรายการ แสดงว่าเปิดใช้แล้ว หาก API ไม่อยู่ในรายการ ให้เปิดใช้โดยทำดังนี้
- ที่ด้านบนของหน้า ให้เลือกเปิดใช้ API และบริการเพื่อแสดงแท็บคลัง หรือเลือกคลังจากเมนูด้านซ้าย
- ค้นหา Places API แล้วเลือกจากรายการผลลัพธ์
- เลือกเปิดใช้ เมื่อกระบวนการเสร็จสมบูรณ์แล้ว Places API จะปรากฏในรายการ 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 Console
- คลิกเมนูแบบเลื่อนลงของโปรเจ็กต์ แล้วเลือกโปรเจ็กต์ที่มีคีย์ API ที่ต้องการรักษาความปลอดภัย
- คลิกปุ่มเมนู แล้วเลือก Google Maps Platform > ข้อมูลเข้าสู่ระบบ
- ในหน้าข้อมูลเข้าสู่ระบบ ให้คลิกชื่อคีย์ API ที่ต้องการรักษาความปลอดภัย
- ในหน้าจํากัดและเปลี่ยนชื่อคีย์ API ให้ตั้งค่าข้อจํากัด
- ข้อจำกัด API
- เลือกจํากัดคีย์
- คลิกเลือก API แล้วเลือกทั้ง Maps JavaScript API และ Places API
(หาก API ใด API หนึ่งไม่แสดงในรายการ คุณต้องเปิดใช้ API นั้น)
- คลิกบันทึก
ขีดจำกัดการใช้งานและนโยบาย
โควต้า
คลัง Places จะใช้โควต้าการใช้งานร่วมกับ Places API ตามที่อธิบายไว้ในเอกสารประกอบเกี่ยวกับขีดจํากัดการใช้งานของ Places API
นโยบาย
การใช้ Places Library, Maps JavaScript API ต้องเป็นไปตามนโยบายที่อธิบายไว้สำหรับ Places API
การค้นหาสถานที่
บริการสถานที่ช่วยให้คุณทำการค้นหาประเภทต่อไปนี้ได้
- ค้นหาสถานที่จากคำค้นหา แสดงสถานที่ตามคำค้นหาที่เป็นข้อความ (เช่น ชื่อหรือที่อยู่ของสถานที่)
- ค้นหาสถานที่จากหมายเลขโทรศัพท์แสดงผลสถานที่ตามหมายเลขโทรศัพท์
- การค้นหาในพื้นที่ แสดงรายการสถานที่ใกล้เคียงตามสถานที่ตั้งของผู้ใช้
- การค้นหาข้อความ แสดงรายการสถานที่ใกล้เคียงตามสตริงการค้นหา เช่น "Pizza"
- คำขอรายละเอียดสถานที่จะแสดงข้อมูลที่ละเอียดยิ่งขึ้นเกี่ยวกับสถานที่หนึ่งๆ ซึ่งรวมถึงรีวิวจากผู้ใช้
ข้อมูลที่แสดงผลอาจรวมถึงสถานที่ตั้ง เช่น ร้านอาหาร ร้านค้า และสำนักงาน ตลอดจนผลการค้นหา "พิกัดภูมิศาสตร์" ซึ่งระบุที่อยู่ เขตการปกครอง เช่น เมืองและอำเภอ และจุดที่น่าสนใจอื่นๆ
คำขอค้นหาสถานที่
คำขอค้นหาสถานที่ช่วยให้คุณค้นหาสถานที่ได้โดยใช้ข้อความค้นหาหรือหมายเลขโทรศัพท์ คำขอค้นหาสถานที่มี 2 ประเภท ได้แก่
ค้นหาสถานที่จากการค้นหา
ค้นหาสถานที่จากข้อความจะรับอินพุตข้อความและแสดงสถานที่ อินพุตอาจเป็นข้อมูลสถานที่ประเภทใดก็ได้ เช่น ชื่อหรือที่อยู่ธุรกิจ หากต้องการส่งคำขอค้นหาสถานที่จากคำค้นหา ให้เรียกใช้เมธอด findPlaceFromQuery()
ของ PlacesService
ซึ่งใช้พารามิเตอร์ต่อไปนี้
query
(ต้องระบุ) สตริงข้อความที่จะค้นหา เช่น "restaurant" หรือ "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
ด้วย
ฟิลด์ (วิธีการค้นหาสถานที่)
ใช้พารามิเตอร์ fields
เพื่อระบุอาร์เรย์ประเภทข้อมูลสถานที่ที่จะแสดงผล
เช่น fields: ['formatted_address', 'opening_hours', 'geometry']
ใช้จุดเมื่อระบุค่าคอมโพเนนต์ เช่น opening_hours.weekday_text
ช่องต่างๆ สอดคล้องกับผลการค้นหาของ Place Search และแบ่งออกเป็น 3 หมวดหมู่การเรียกเก็บเงิน ได้แก่ พื้นฐาน รายชื่อติดต่อ และบรรยากาศ ระบบจะเรียกเก็บเงินสำหรับช่องพื้นฐานในราคาฐานและไม่มีค่าใช้จ่ายเพิ่มเติม ระบบจะเรียกเก็บเงินสำหรับช่อง "รายชื่อติดต่อ" และ "บรรยากาศ" ในอัตราที่สูงขึ้น ดูข้อมูลเพิ่มเติมได้ที่ชีตราคา ระบบจะแสดงการระบุแหล่งที่มา (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
(เลิกใช้งานแล้ว ในไลบรารีสถานที่ของ Maps JavaScript API ใช้คำขอรายละเอียดสถานที่เพื่อรับผลการค้นหา
opening_hours
)
บรรยากาศ
หมวดหมู่บรรยากาศประกอบด้วยช่องต่อไปนี้price_level
, rating
, user_ratings_total
วิธีการ findPlaceFromQuery()
และ findPlaceFromPhoneNumber()
แต่ละรายการใช้ชุดช่องเดียวกัน และสามารถแสดงผลช่องเดียวกันในการตอบกลับที่เกี่ยวข้อง
ตั้งค่าความลำเอียงของตำแหน่ง (วิธีการค้นหาสถานที่)
ใช้พารามิเตอร์ 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
โดยที่location
จะรับออบเจ็กต์google.maps.LatLng
ส่วนradius
จะรับจำนวนเต็มธรรมดา ซึ่งแสดงรัศมีของวงกลมเป็นเมตร รัศมีสูงสุดที่อนุญาตคือ 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
จะต้องระบุพารามิเตอร์radius
ด้วยgoogle.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
(ต้องระบุ) สตริงข้อความที่จะค้นหา เช่น "restaurant" หรือ "123 Main Street" ต้องเป็นชื่อ ที่อยู่ หรือหมวดหมู่ของสถานที่ตั้ง อินพุตประเภทอื่นๆ อาจทำให้เกิดข้อผิดพลาดและไม่มีการรับประกันว่าจะแสดงผลลัพธ์ที่ถูกต้อง บริการ Places จะแสดงรายการที่ตรงกันตามสตริงนี้และจัดเรียงผลลัพธ์ตามความเกี่ยวข้องที่รับรู้ พารามิเตอร์นี้จะกลายเป็นพารามิเตอร์ที่ไม่บังคับหากมีการใช้พารามิเตอร์type
ในคำขอค้นหาด้วย- ไม่บังคับ
openNow
— ค่าบูลีน ซึ่งระบุว่าบริการสถานที่ควรแสดงเฉพาะสถานที่ที่เปิดทําธุรกิจอยู่ ณ เวลาที่มีการส่งการค้นหา ระบบจะไม่แสดงสถานที่ที่ไม่ได้ระบุเวลาทำการในฐานข้อมูล 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
ระบุสถานะการทํางานของสถานที่ หากเป็นธุรกิจ โดยอาจมีค่าใดค่าหนึ่งต่อไปนี้OPERATIONAL
CLOSED_TEMPORARILY
CLOSED_PERMANENTLY
business_status
formatted_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
instead เพื่อดูสถานะการทํางานของธุรกิจplus_code
(ดูOpen Location 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
จะแสดงรหัสสี 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
ผ่านฟังก์ชันการเรียกกลับ ออบเจ็กต์ 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
ไม่พบสถานที่อ้างอิงในฐานข้อมูลสถานที่REQUEST_DENIED
: หน้าเว็บไม่ได้รับอนุญาตให้ใช้ PlacesServiceUNKNOWN_ERROR
: ประมวลผลคําขอ PlacesService ไม่ได้เนื่องจากข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์ คำขออาจสำเร็จหากคุณลองอีกครั้งZERO_RESULTS
: ไม่พบผลการค้นหาสำหรับคำขอนี้
ผลการค้นหารายละเอียดสถานที่
การเรียกใช้ getDetails()
ที่สำเร็จจะแสดงผลออบเจ็กต์
PlaceResult
ที่มีพร็อพเพอร์ตี้ต่อไปนี้
address_components
: อาร์เรย์ที่มีคอมโพเนนต์แยกต่างหากซึ่งใช้กับที่อยู่นี้ได้โดยทั่วไปแล้วองค์ประกอบที่อยู่แต่ละรายการจะมีช่องต่อไปนี้
types[]
คืออาร์เรย์ที่ระบุประเภทของคอมโพเนนต์ที่อยู่ ดูรายการประเภทที่รองรับlong_name
คือคำอธิบายแบบเต็มหรือชื่อของคอมโพเนนต์ที่อยู่ตามที่ Geocoder แสดงshort_name
คือชื่อแบบย่อของข้อความสำหรับคอมโพเนนต์ที่อยู่ หากมี ตัวอย่างเช่น องค์ประกอบที่อยู่สำหรับรัฐอะแลสกาอาจมีlong_name
เป็น "Alaska" และshort_name
เป็น "AK" โดยใช้ตัวย่อไปรษณีย์ 2 ตัว
โปรดทราบข้อเท็จจริงต่อไปนี้เกี่ยวกับอาร์เรย์
address_components[]
- อาร์เรย์ขององค์ประกอบที่อยู่อาจมีองค์ประกอบมากกว่า
formatted_address
- อาร์เรย์ไม่จำเป็นต้องรวมนิติบุคคลทางการเมืองทั้งหมดที่มีที่อยู่ นอกเหนือจากที่อยู่ที่อยู่ใน
formatted_address
หากต้องการดึงข้อมูลนิติบุคคลทั้งหมดที่มีที่อยู่ที่ต้องการ คุณควรใช้การแปลงพิกัดภูมิศาสตร์ย้อนกลับ โดยส่งละติจูด/ลองจิจูดของที่อยู่เป็นพารามิเตอร์ไปยังคำขอ - เราไม่รับประกันว่ารูปแบบของคำตอบจะเหมือนกันระหว่างคำขอ โดยเฉพาะอย่างยิ่ง จำนวน
address_components
จะแตกต่างกันไปตามที่อยู่ที่มีการขอ และอาจเปลี่ยนแปลงเมื่อเวลาผ่านไปสำหรับที่อยู่เดียวกัน คอมโพเนนต์สามารถเปลี่ยนตำแหน่งในอาร์เรย์ได้ ประเภทของคอมโพเนนต์จะเปลี่ยนแปลงได้ คอมโพเนนต์บางอย่างอาจหายไปในการตอบกลับในภายหลัง
business_status
ระบุสถานะการทํางานของสถานที่ หากเป็นธุรกิจ โดยอาจมีค่าใดค่าหนึ่งต่อไปนี้OPERATIONAL
CLOSED_TEMPORARILY
CLOSED_PERMANENTLY
business_status
formatted_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
instead เพื่อดูสถานะการทํางานของธุรกิจplus_code
(ดูOpen Location 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
: ข้อความระบุแหล่งที่มาที่จะแสดงสำหรับผลการค้นหาสถานที่นี้icon
: URL ไปยังแหล่งข้อมูลรูปภาพที่สามารถใช้เพื่อแสดงประเภทของสถานที่นี้international_phone_number
มีหมายเลขโทรศัพท์ของสถานที่ในรูปแบบระหว่างประเทศ รูปแบบระหว่างประเทศจะมีรหัสประเทศและนำหน้าด้วยเครื่องหมายบวก (+) ตัวอย่างเช่นinternational_phone_number
สำหรับสำนักงานของ Google ในซิดนีย์ ออสเตรเลียคือ+61 2 9374 4000
name
: ชื่อสถานที่utc_offset
เลิกใช้งานแล้ว ในไลบรารี Places, 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
กับรายละเอียดสถานที่ได้ในวิดีโอนี้) เป็นค่าบูลีนที่ระบุว่าสถานที่เปิดอยู่หรือไม่ ณ เวลาปัจจุบันperiods[]
คืออาร์เรย์ของระยะเวลาเปิดทำการ 7 วัน โดยเริ่มจากวันอาทิตย์ตามลำดับเวลา แต่ละระยะเวลาจะมีข้อมูลต่อไปนี้open
มีออบเจ็กต์วันและเวลา 2 รายการซึ่งอธิบายเวลาเปิดของสถานที่ ดังนี้day
ตัวเลข 0-6 ซึ่งสอดคล้องกับวันในสัปดาห์ โดยเริ่มจากวันอาทิตย์ เช่น 2 หมายถึงวันอังคารtime
อาจมีเวลาของวันในรูปแบบ 24 ชั่วโมง hhmm (ค่าอยู่ในช่วง 0000–2359) ระบบจะรายงานtime
ตามเขตเวลาของสถานที่
close
อาจมีออบเจ็กต์วันและเวลา 2 รายการซึ่งอธิบายเวลาที่สถานที่ปิด หมายเหตุ: หากสถานที่เปิดตลอด ส่วนclose
จะหายไปจากคำตอบ แอปพลิเคชันสามารถใช้ค่าเปิดอยู่เสมอซึ่งแสดงเป็นระยะเวลาopen
ที่มีday
ที่มีค่า 0 และtime
ที่มีค่า 0000 และไม่มีclose
weekday_text
คืออาร์เรย์สตริง 7 รายการที่แสดงเวลาทำการที่ฟอร์แมตแล้วสำหรับแต่ละวันในสัปดาห์ หากมีการระบุพารามิเตอร์language
ในคำขอรายละเอียดสถานที่ บริการ Places จะจัดรูปแบบและแปลเวลาทำการเป็นภาษานั้นๆ อย่างเหมาะสม ลําดับขององค์ประกอบในอาร์เรย์นี้ขึ้นอยู่กับพารามิเตอร์language
บางภาษาเริ่มต้นสัปดาห์ที่วันจันทร์ ส่วนบางภาษาเริ่มต้นที่วันอาทิตย์
permanently_closed
(เลิกใช้งานแล้ว) คือธงบูลีนที่ระบุว่าสถานที่ปิดกิจการถาวรหรือชั่วคราว (ค่าtrue
) อย่าใช้permanently_closed
แต่ให้ใช้business_status
instead เพื่อดูสถานะการทํางานของธุรกิจ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
และservice
rating
คะแนนของผู้ใช้สำหรับแง่มุมนี้โดยเฉพาะ โดยคะแนนมีตั้งแต่ 0 ถึง 3
author_name
ชื่อผู้ใช้ที่ส่งรีวิว รีวิวที่ไม่ระบุตัวตนจะระบุแหล่งที่มาว่า "ผู้ใช้ Google" หากตั้งค่าพารามิเตอร์ภาษาไว้ วลี "ผู้ใช้ Google" จะแสดงสตริงที่แปลแล้วauthor_url
URL ไปยังโปรไฟล์ 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);
รูปภาพสถานที่
ฟีเจอร์รูปภาพสถานที่ช่วยให้คุณเพิ่มเนื้อหารูปภาพคุณภาพสูงลงในเว็บไซต์ได้ บริการรูปภาพช่วยให้คุณเข้าถึงรูปภาพหลายล้านรูปที่จัดเก็บไว้ในฐานข้อมูล Places และ Google+ Local เมื่อคุณรับข้อมูลสถานที่โดยใช้คำขอรายละเอียดสถานที่ ระบบจะแสดงข้อมูลอ้างอิงรูปภาพสำหรับเนื้อหารูปภาพที่เกี่ยวข้อง คำขอการค้นหาใกล้เคียงและการค้นหาข้อความจะแสดงรูปภาพอ้างอิงรูปเดียวต่อสถานที่ด้วย หากเกี่ยวข้อง เมื่อใช้บริการ Photos คุณจะเข้าถึงรูปภาพที่อ้างอิงและปรับขนาดรูปภาพให้เหมาะสมกับแอปพลิเคชันของคุณได้
ระบบจะแสดงผลอาร์เรย์ออบเจ็กต์ PlacePhoto
เป็นส่วนหนึ่งของออบเจ็กต์ PlaceResult
สำหรับคำขอ getDetails()
, textSearch()
หรือ nearbySearch()
ทั้งหมดที่ส่งไปยัง PlacesService
หมายเหตุ: จำนวนรูปภาพที่แสดงจะแตกต่างกันไปตามคำขอ
- การค้นหาใกล้เคียงหรือการค้นหาข้อความจะแสดงผลออบเจ็กต์
PlacePhoto
รายการที่มากที่สุด - คำขอรายละเอียดจะแสดงผลออบเจ็กต์
PlacePhoto
ได้สูงสุด 10 รายการ
คุณสามารถขอ URL ของรูปภาพที่เชื่อมโยงได้โดยเรียกใช้เมธอด PlacePhoto.getUrl()
และส่งออบเจ็กต์ PhotoOptions
ที่ถูกต้อง ออบเจ็กต์ PhotoOptions
ช่วยให้คุณระบุความสูงและความกว้างสูงสุดที่ต้องการของรูปภาพได้ หากคุณระบุค่าสำหรับทั้ง maxHeight
และ maxWidth
บริการรูปภาพจะปรับขนาดรูปภาพให้เล็กลงโดยรักษาสัดส่วนภาพเดิม
ข้อมูลโค้ดต่อไปนี้จะยอมรับออบเจ็กต์สถานที่และเพิ่มเครื่องหมายลงในแผนที่หากมีรูปภาพ รูปภาพเครื่องหมายเริ่มต้นจะแทนที่ด้วยรูปภาพเวอร์ชันขนาดเล็ก
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}) }); }
รูปภาพที่บริการ Photos แสดงผลมาจากแหล่งที่มาที่หลากหลาย ซึ่งรวมถึงรูปภาพจากเจ้าของธุรกิจและรูปภาพที่ผู้ใช้ส่งเข้ามา ในกรณีส่วนใหญ่ คุณสามารถใช้รูปภาพเหล่านี้ได้โดยไม่ต้องระบุแหล่งที่มา หรือจะมีแหล่งที่มาที่จําเป็นรวมอยู่ในรูปภาพ อย่างไรก็ตาม หากองค์ประกอบ photo
ที่แสดงผลมีค่าในช่อง html_attributions
คุณต้องใส่การระบุแหล่งที่มาเพิ่มเติมในแอปพลิเคชันทุกที่ที่คุณแสดงรูปภาพ