ภาพรวม
ฟังก์ชันในไลบรารี Places, Maps JavaScript API ช่วยให้แอปพลิเคชันของคุณค้นหาสถานที่ (ซึ่งระบุไว้ใน API นี้ว่าเป็นสถานประกอบการ สถานที่ตั้งทางภูมิศาสตร์ หรือจุดสนใจที่โดดเด่น) ที่อยู่ภายในพื้นที่ที่กำหนด เช่น ขอบเขตของแผนที่หรือรอบๆ จุดที่กำหนด
Places API มีคุณลักษณะการเติมข้อความอัตโนมัติที่คุณสามารถใช้เพื่อให้แอปพลิเคชันของคุณมีลักษณะเหมือนการค้นหาล่วงหน้าในช่องค้นหาของ Google Maps เมื่อผู้ใช้เริ่มพิมพ์ที่อยู่ ระบบจะเติมข้อความที่เหลือให้โดยอัตโนมัติ ดูข้อมูลเพิ่มเติมได้ที่เอกสารประกอบเกี่ยวกับการเติมข้อความอัตโนมัติ
เริ่มต้นใช้งาน
หากไม่คุ้นเคยกับ Maps JavaScript API หรือ JavaScript เราขอแนะนำให้อ่าน JavaScript และรับคีย์ API ก่อนเริ่มต้นใช้งาน
เปิดใช้ API
ก่อนที่จะใช้ไลบรารี Places ใน Maps JavaScript API ก่อนอื่นให้ตรวจสอบว่าได้เปิดใช้ Places API ใน Google Cloud Console ในโปรเจ็กต์เดียวกันกับที่คุณตั้งค่าไว้สำหรับ Maps JavaScript API
วิธีดูรายการ API ที่เปิดใช้
- ไปที่ Google Cloud Console
- คลิกปุ่มเลือกโปรเจ็กต์ จากนั้นเลือกโปรเจ็กต์เดียวกับที่คุณตั้งค่าสำหรับ Maps JavaScript API แล้วคลิกเปิด
- จากรายการ API ในหน้าแดชบอร์ด ให้มองหา Places API
- หากคุณเห็น Places API ในรายการ แสดงว่าเปิดใช้งานแล้ว หากไม่มี API ในรายการ ให้เปิดใช้โดยทำดังนี้
- เลือกเปิดใช้ API และบริการที่ด้านบนของหน้าเพื่อแสดงแท็บไลบรารี หรือเลือกคลังจากเมนูด้านซ้าย
- ค้นหา Places API แล้วเลือกจากรายการผลการค้นหา
- เลือกเปิดใช้ เมื่อดำเนินการเสร็จ Places API จะปรากฏในรายการ API บนหน้าแดชบอร์ด
กำลังโหลดไลบรารี
บริการ Places เป็นไลบรารีที่มีในตัว และแยกจากโค้ด JavaScript API หลักของ Maps หากต้องการใช้ฟังก์ชันภายในไลบรารีนี้ คุณต้องโหลดฟังก์ชันโดยใช้พารามิเตอร์ libraries
ใน URL ของ Bootstrap ของ Maps API ก่อน:
<script async
src="https://maps.googleapis.com/maps/api/js?key=YOUR_API_KEY&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 ใดในรายการ คุณจะต้องenable API)
- คลิกบันทึก
ขีดจำกัดและนโยบายการใช้งาน
โควต้า
Places Library จะแชร์โควต้าการใช้งานกับ Places API ดังที่อธิบายไว้ในเอกสารขีดจำกัดการใช้งานสำหรับ Places API
นโยบาย
การใช้ Places Library ของ Maps JavaScript API จะต้องเป็นไปตามนโยบายที่อธิบายไว้สำหรับ Places API
การค้นหาสถานที่
ด้วยบริการ Places คุณสามารถทำการค้นหาประเภทต่อไปนี้
- ค้นหาสถานที่จากข้อความค้นหา แสดงผลสถานที่ตามข้อความค้นหา (เช่น ชื่อหรือที่อยู่ของสถานที่)
- ค้นหาสถานที่จากหมายเลขโทรศัพท์จะแสดงสถานที่โดยอิงจากหมายเลขโทรศัพท์
- การค้นหาใกล้เคียง จะแสดงรายการสถานที่ใกล้เคียงโดยอิงตามตำแหน่งของผู้ใช้
- การค้นหาข้อความ จะแสดงรายการสถานที่ใกล้เคียงตามสตริงการค้นหา เช่น "พิซซ่า"
- คำขอรายละเอียดสถานที่ แสดงข้อมูลที่ละเอียดมากขึ้นเกี่ยวกับสถานที่หนึ่งๆ รวมถึงรีวิวของผู้ใช้
ข้อมูลที่ได้รับคืนอาจรวมถึงสถานประกอบการต่างๆ เช่น ร้านอาหาร ร้านค้า และสำนักงาน รวมถึงผลการค้นหา "พิกัดพิกัดภูมิศาสตร์" ซึ่งระบุที่อยู่ พื้นที่ทางการเมือง เช่น เมืองต่างๆ และสถานที่น่าสนใจอื่นๆ
ค้นหาคำขอสถานที่
คำขอค้นหาสถานที่ช่วยให้คุณค้นหาสถานที่โดยใช้ข้อความค้นหาหรือหมายเลขโทรศัพท์ได้ คำขอ "ค้นหาสถานที่" มี 2 ประเภท ได้แก่
ค้นหาสถานที่จากข้อความค้นหา
ค้นหาสถานที่จากข้อความค้นหาจะใช้การป้อนข้อความและแสดงผลสถานที่ ข้อมูลที่ป้อนอาจเป็นข้อมูลสถานที่ประเภทใดก็ได้ เช่น ชื่อหรือที่อยู่ของธุรกิจ หากต้องการสร้างคำขอ "ค้นหาสถานที่จากคำค้นหา" ให้เรียกใช้เมธอด findPlaceFromQuery()
ของ PlacesService
ซึ่งจะนำพารามิเตอร์ต่อไปนี้
query
(ต้องระบุ) สตริงข้อความที่จะค้นหา เช่น "Restaurant" หรือ "123 Main Street" ต้องเป็นชื่อสถานที่ ที่อยู่ หรือหมวดหมู่ของสถานประกอบการ อินพุตประเภทอื่นๆ อาจทําให้เกิดข้อผิดพลาดและไม่รับประกันว่าจะแสดงผลลัพธ์ที่ถูกต้อง Places API จะแสดงผลตัวเลือกที่ตรงกันตามสตริงนี้และเรียงลำดับผลลัพธ์ตามความเกี่ยวข้องที่รับรู้ได้fields
(จำเป็น) ช่องอย่างน้อย 1 ช่องที่ระบุประเภทของข้อมูลสถานที่ที่จะแสดงlocationBias
(ไม่บังคับ) พิกัดการกำหนดพื้นที่ที่จะค้นหา ซึ่งอาจเป็นอย่างใดอย่างหนึ่งต่อไปนี้- ชุดพิกัดละติจูด/ลองจิจูดที่ระบุเป็นLatLngLiteral หรือวัตถุ LatLng
- ขอบเขตสี่เหลี่ยมผืนผ้า (คู่ละติจูด/ลองจิจูดสองคู่ หรือวัตถุ LatLngBound)
- รัศมี (หน่วยเป็นเมตร) ตรงกลางของละติจูด/ลองจิจูด
คุณต้องส่งเมธอดโค้ดเรียกกลับไปยัง 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 จุด หรือวัตถุละติจูด/ลองจิจูด)
- รัศมี (หน่วยเป็นเมตร) ตรงกลางของละติจูด/ลองจิจูด
คุณต้องส่งเมธอดโค้ดเรียกกลับไปยัง findPlaceFromPhoneNumber()
ด้วยเพื่อจัดการออบเจ็กต์ผลลัพธ์และการตอบกลับ google.maps.places.PlacesServiceStatus
ช่อง (ค้นหาเมธอดสถานที่)
ใช้พารามิเตอร์ fields
เพื่อระบุอาร์เรย์ของประเภทข้อมูลสถานที่ที่จะแสดง
เช่น fields: ['formatted_address', 'opening_hours', 'geometry']
ใช้จุดเมื่อระบุค่าประกอบ เช่น opening_hours.weekday_text
ช่องจะสอดคล้องกับผลการค้นหาสถานที่ และแบ่งออกเป็น 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
(เลิกใช้งานแล้ว ใน Places Library, Maps JavaScript API ใช้คำขอรายละเอียดสถานที่เพื่อรับผลลัพธ์
opening_hours
)
บรรยากาศ
หมวดหมู่บรรยากาศมีช่องต่อไปนี้price_level
, rating
, user_ratings_total
เมธอด findPlaceFromQuery()
และ findPlaceFromPhoneNumber()
แต่ละเมธอดจะอยู่ในชุดช่องเดียวกัน และอาจแสดงช่องเดียวกันในคำตอบที่เกี่ยวข้อง
ตั้งค่าการให้น้ำหนักตำแหน่ง (ค้นหาเมธอด 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}}
คำขอการค้นหาที่อยู่ใกล้เคียง
การค้นหาใกล้เคียงช่วยให้คุณค้นหาสถานที่ภายในพื้นที่ที่ระบุตามคีย์เวิร์ดหรือประเภทได้ การค้นหาใกล้เคียงต้องมีตำแหน่งเสมอ ซึ่งสามารถระบุได้ด้วยวิธีใดวิธีหนึ่งต่อไปนี้
- a
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
ที่กำหนดพื้นที่ค้นหาสี่เหลี่ยมผืนผ้า หรือ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
แล้ว ต้องระบุพารามิเตอร์radius
google.maps.places.RankBy.DISTANCE
ตัวเลือกนี้จะจัดเรียงผลลัพธ์ตามลำดับจากน้อยไปมากตามระยะทางจากlocation
ที่ระบุ (จำเป็น) โปรดทราบว่าคุณระบุbounds
ที่กำหนดเองและ/หรือradius
ไม่ได้หากระบุRankBy.DISTANCE
เมื่อระบุRankBy.DISTANCE
คุณต้องระบุkeyword
,name
หรือtype
อย่างน้อย 1 รายการ
type
— จำกัดผลการค้นหาให้แสดงเฉพาะตำแหน่งที่ตรงกับประเภทที่ระบุ โดยสามารถระบุได้เพียงประเภทเดียว (หากระบุมากกว่า 1 ประเภท ระบบจะไม่สนใจทุกประเภทที่อยู่หลังรายการแรก) ดูรายการประเภทที่รองรับ
คุณต้องส่งเมธอดโค้ดเรียกกลับไปยัง 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 Text Search เป็นบริการบนเว็บที่แสดงผลข้อมูลเกี่ยวกับกลุ่มสถานที่ตามสตริง ตัวอย่างเช่น "พิซซ่าในนิวยอร์ก" หรือ "ร้านรองเท้าใกล้ออตตาวา" บริการจะตอบกลับด้วยรายการสถานที่ที่ตรงกับสตริงข้อความและการให้น้ำหนักพิเศษใดๆ กับตำแหน่งที่ตั้งค่าไว้ การตอบสนองการค้นหาจะรวมรายการสถานที่ คุณส่งคำขอรายละเอียดสถานที่เพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับสถานที่ในการตอบกลับได้
การค้นหาข้อความจะเริ่มต้นโดยมีการเรียกใช้เมธอด textSearch()
ของ PlacesService
service = new google.maps.places.PlacesService(map); service.textSearch(request, callback);
เมธอดนี้จะรับคำขอที่มีช่องต่อไปนี้
query
(ต้องระบุ) สตริงข้อความที่จะค้นหา เช่น "Restaurant" หรือ "123 Main Street" ต้องเป็นชื่อสถานที่ ที่อยู่ หรือหมวดหมู่ของสถานประกอบการ อินพุตประเภทอื่นๆ อาจทําให้เกิดข้อผิดพลาดและไม่รับประกันว่าจะแสดงผลลัพธ์ที่ถูกต้อง บริการ Places จะแสดงผลตัวเลือกที่ตรงกันตามสตริงนี้และเรียงลำดับผลลัพธ์ตามความเกี่ยวข้องที่รับรู้ได้ พารามิเตอร์นี้จะเป็นพารามิเตอร์ที่ไม่บังคับหากมีการใช้พารามิเตอร์type
ในคำขอการค้นหาด้วย- ไม่บังคับ
openNow
— ค่าบูลีนที่ระบุว่าบริการ Places ควรแสดงเฉพาะสถานที่ที่เปิดให้บริการขณะที่มีการส่งข้อความค้นหาเท่านั้น และจะไม่แสดงสถานที่ที่ไม่ระบุเวลาทำการในฐานข้อมูลของ Google Places หากคุณใส่พารามิเตอร์นี้ไว้ในคำค้นหา การตั้งค่าopenNow
เป็นfalse
จะไม่มีผลminPriceLevel
และmaxPriceLevel
— จำกัดผลการค้นหาให้แสดงเฉพาะสถานที่ที่อยู่ภายในระดับราคาที่ระบุ ค่าที่ใช้ได้จะอยู่ในช่วงตั้งแต่ 0 (ประหยัดที่สุด) ถึง 4 (แพงที่สุด)- ข้อใดข้อหนึ่งต่อไปนี้
bounds
— ออบเจ็กต์google.maps.LatLngBounds
ที่กำหนดสี่เหลี่ยมผืนผ้าที่จะค้นหา หรือlocation
และradius
— คุณอาจให้น้ำหนักผลลัพธ์กับแวดวงที่ระบุได้โดยการส่งผ่านlocation
และพารามิเตอร์radius
คำสั่งนี้บอกให้บริการ Places ต้องการแสดงผลการค้นหาภายในแวดวงดังกล่าว แต่ผลลัพธ์ที่อยู่นอกพื้นที่ที่กำหนดอาจยังแสดงผลอยู่ ตำแหน่งจะใช้วัตถุgoogle.maps.LatLng
และรัศมีจะใช้จำนวนเต็มแบบง่ายแทนรัศมีของวงกลมในหน่วยเมตร รัศมีสูงสุดที่อนุญาตคือ 50,000 เมตร
type
— จำกัดผลการค้นหาไว้เฉพาะสถานที่ที่ตรงกับประเภทที่ระบุ โดยสามารถระบุได้เพียงประเภทเดียว (หากระบุมากกว่า 1 ประเภท ระบบจะไม่สนใจทุกประเภทที่อยู่หลังรายการแรก) ดูรายการประเภทที่รองรับ
คุณต้องส่งเมธอดโค้ดเรียกกลับไปยัง 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
เพื่อดูสถานะการดำเนินการของธุรกิจแทนplus_code
(ดูรหัสสถานที่ตั้งแบบเปิดและเครื่องหมายบวก) เป็นการอ้างอิงตำแหน่งที่เข้ารหัส ซึ่งมาจากพิกัดละติจูดและลองจิจูดที่แสดงพื้นที่: 1/8000 องศา 1/8000 ขององศา (ประมาณ 14 ม. x 14 ม. ที่เส้นศูนย์สูตร) หรือเล็กกว่า ใช้โค้ด Plus แทนที่อยู่ในสถานที่ที่ไม่มีอยู่จริงได้ (อาคารที่ไม่มีหมายเลขกำกับหรือไม่ได้ตั้งชื่อถนน)โค้ด Plus จะมีการจัดรูปแบบเป็นโค้ดส่วนกลางและโค้ดแบบผสม ดังนี้
global_code
คือรหัสพื้นที่ 4 อักขระ และรหัสท้องถิ่นยาว 6 อักขระขึ้นไป (849VCWC8+R9)compound_code
คือรหัสท้องถิ่นที่มีความยาว 6 อักขระขึ้นไปโดยมีตำแหน่งที่ชัดเจน (CWC8+R9, Mountain View, CA, USA) อย่าแยกวิเคราะห์เนื้อหานี้แบบเป็นโปรแกรม
html_attributions
: อาร์เรย์ของการระบุแหล่งที่มาที่คุณควรแสดงเมื่อแสดงผลการค้นหา แต่ละรายการในอาร์เรย์จะมีข้อความ HTML สำหรับการระบุแหล่งที่มา 1 รายการ หมายเหตุ: นี่คือการรวมการระบุแหล่งที่มาทั้งหมดสําหรับการตอบกลับการค้นหาทั้งหมด ออบเจ็กต์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
คุณต้องแสดงผลการค้นหาแต่ละหน้าก่อน จึงจะแสดงผลการค้นหาหน้าถัดไป โปรดทราบว่าการค้นหาแต่ละครั้งจะนับเป็นคำขอเดียวจากขีดจำกัดการใช้งาน
ตัวอย่างด้านล่างแสดงวิธีปรับเปลี่ยนฟังก์ชันเรียกกลับให้บันทึกออบเจ็กต์ 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 ที่จะแสดงผล ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีอ้างอิงสถานที่ด้วยรหัสสถานที่
นอกจากนี้ยังต้องใช้เมธอดโค้ดเรียกกลับด้วย ซึ่งจะต้องจัดการรหัสสถานะที่ส่งผ่านในการตอบกลับ 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
, , JavaScript/th} (, JavaScript/19utc_offset
utc_offset_minutes
vicinity
การติดต่อ
หมวดหมู่รายชื่อติดต่อประกอบด้วยช่องต่อไปนี้
formatted_phone_number
, international_phone_number
,
opening_hours
, website
บรรยากาศ
หมวดหมู่บรรยากาศมีช่องต่อไปนี้
price_level
, rating
, reviews
,
user_ratings_total
ดูข้อมูลเพิ่มเติมเกี่ยวกับช่องสถานที่ สำหรับข้อมูลเพิ่มเติมเกี่ยวกับวิธีเรียกเก็บเงินคำขอข้อมูล Place โปรดดูที่การใช้งานและการเรียกเก็บเงิน
การตอบกลับรายละเอียดสถานที่
รหัสสถานะ
ออบเจ็กต์การตอบกลับ PlacesServiceStatus
จะมีสถานะของคำขอ และอาจมีข้อมูลการแก้ไขข้อบกพร่องเพื่อช่วยคุณติดตามสาเหตุที่คำขอรายละเอียดสถานที่ล้มเหลว ค่าสถานะที่เป็นไปได้มีดังนี้
INVALID_REQUEST
: คำขอนี้ไม่ถูกต้องOK
: การตอบสนองมีผลลัพธ์ที่ถูกต้องOVER_QUERY_LIMIT
: หน้าเว็บใช้โควต้าคำขอเกินขีดจำกัดแล้วNOT_FOUND
ไม่พบตำแหน่งที่อ้างอิงในฐานข้อมูล PlacesREQUEST_DENIED
: หน้าเว็บไม่ได้รับอนุญาตให้ใช้ PlacesServiceUNKNOWN_ERROR
: ดำเนินการตามคำขอ PlacesService ไม่ได้เนื่องจากเกิดข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์ คำขออาจสำเร็จถ้าคุณลองอีกครั้งZERO_RESULTS
: ไม่พบผลการค้นหาสำหรับคำขอนี้
ผลการค้นหารายละเอียดสถานที่
การเรียก getDetails()
ที่สำเร็จจะแสดงผลออบเจ็กต์
PlaceResult
ที่มีพร็อพเพอร์ตี้ต่อไปนี้
address_components
: อาร์เรย์ที่มีคอมโพเนนต์แยกต่างหากที่ใช้กับที่อยู่นี้คอมโพเนนต์ที่อยู่แต่ละรายการมักจะมีช่องต่อไปนี้
types[]
คืออาร์เรย์ที่ระบุประเภทของคอมโพเนนต์ที่อยู่ ดูรายการประเภทที่รองรับlong_name
คือคำอธิบายที่เป็นข้อความแบบเต็มหรือชื่อของคอมโพเนนต์ที่อยู่ตามที่ Geocoder แสดงผลshort_name
คือชื่อข้อความแบบย่อสำหรับคอมโพเนนต์ที่อยู่ (หากมี) เช่น คอมโพเนนต์ที่อยู่สําหรับรัฐอะแลสกาอาจมีlong_name
เป็น "อะแลสกา" และ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
เพื่อดูสถานะการดำเนินการของธุรกิจแทนplus_code
(ดูรหัสสถานที่ตั้งแบบเปิดและเครื่องหมายบวก) เป็นการอ้างอิงตำแหน่งที่เข้ารหัส ซึ่งมาจากพิกัดละติจูดและลองจิจูดที่แสดงพื้นที่: 1/8000 องศา 1/8000 ขององศา (ประมาณ 14 ม. x 14 ม. ที่เส้นศูนย์สูตร) หรือเล็กกว่า ใช้โค้ด Plus แทนที่อยู่ในสถานที่ที่ไม่มีอยู่จริงได้ (อาคารที่ไม่มีหมายเลขกำกับหรือไม่ได้ตั้งชื่อถนน)โค้ด Plus จะมีการจัดรูปแบบเป็นโค้ดส่วนกลางและโค้ดแบบผสม ดังนี้
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 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
พร้อมรายละเอียดสถานที่จากวิดีโอนี้) เป็นค่าบูลีนที่ระบุว่าสถานที่เปิดในเวลาปัจจุบันหรือไม่periods[]
คืออาร์เรย์ของช่วงเวลาเปิดที่ครอบคลุม 7 วัน เริ่มตั้งแต่วันอาทิตย์ตามลำดับเวลา แต่ละช่วงเวลาจะมีข้อมูลต่อไปนี้open
มีออบเจ็กต์แบบวันและเวลา 1 คู่ที่อธิบายเวลาที่สถานที่เปิด ดังนี้day
ตัวเลขตั้งแต่ 0–6 ตรงกับวันในสัปดาห์ โดยเริ่มจากวันอาทิตย์ เช่น 2 หมายถึงวันอังคารtime
อาจมีเวลาของวันในรูปแบบ 24 ชั่วโมง hhmm (ค่าจะอยู่ในช่วง 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
และ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(b) ของข้อกำหนดในการให้บริการของ 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 เมื่อคุณได้รับข้อมูลสถานที่โดยใช้คำขอรายละเอียดสถานที่ ข้อมูลอ้างอิงรูปภาพจะแสดงขึ้นมาสำหรับเนื้อหาภาพถ่ายที่เกี่ยวข้อง คำขอ "การค้นหาใกล้เคียง" และ "ค้นหาข้อความ" ยังแสดงข้อมูลอ้างอิงรูปภาพ 1 รายการต่อสถานที่ที่เกี่ยวข้องด้วย เมื่อใช้บริการรูปภาพ คุณจะสามารถเข้าถึงรูปภาพที่อ้างอิงและปรับขนาดรูปภาพให้เป็นขนาดที่เหมาะสมที่สุดสำหรับแอปพลิเคชันของคุณ
ระบบจะแสดงผลอาร์เรย์ของออบเจ็กต์ 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
คุณต้องรวมการระบุแหล่งที่มาเพิ่มเติมไว้ในแอปพลิเคชันด้วยทุกที่ที่แสดงรูปภาพ