ภาพรวม
การแปลงพิกัดภูมิศาสตร์คือกระบวนการแปลงที่อยู่ (เช่น "1600 Amphitheatre Parkway, Mountain View, CA") เป็นพิกัดทางภูมิศาสตร์ (เช่น ละติจูด 37.423021 และลองจิจูด -122.083739) ซึ่งคุณสามารถใช้เพื่อ วางเครื่องหมายหรือกำหนดตำแหน่งแผนที่
การเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับคือกระบวนการแปลงพิกัดทางภูมิศาสตร์ เป็นที่อยู่ที่มนุษย์อ่านได้ (ดูการเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ (การค้นหาที่อยู่))
นอกจากนี้ คุณยังใช้ Geocoder เพื่อค้นหาที่อยู่สำหรับรหัสสถานที่ที่ระบุได้ด้วย
Maps JavaScript API มีคลาส Geocoder สำหรับการเข้ารหัสพิกัดภูมิศาสตร์และการเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับแบบไดนามิกจากข้อมูลที่ผู้ใช้ป้อน หากต้องการเข้ารหัสพิกัดภูมิศาสตร์ที่อยู่แบบคงที่ที่ทราบ โปรดดูบริการเว็บเข้ารหัสพิกัดภูมิศาสตร์แทน
เริ่มต้นใช้งาน
ก่อนใช้บริการการเข้ารหัสพิกัดภูมิศาสตร์ใน Maps JavaScript API โปรดตรวจสอบก่อนว่าได้เปิดใช้ Geocoding API ในคอนโซล Google Cloud ในโปรเจ็กต์เดียวกันกับที่ตั้งค่าไว้สำหรับ Maps JavaScript API
วิธีดูรายการ API ที่เปิดใช้
- ไปที่ Google Cloud Console
- คลิกปุ่มเลือกโปรเจ็กต์ จากนั้นเลือกโปรเจ็กต์เดียวกันกับที่คุณตั้งค่า สำหรับ Maps JavaScript API แล้วคลิกเปิด
- จากรายการ API ในแดชบอร์ด ให้มองหา Geocoding API
- หากเห็น API ในรายการ แสดงว่าคุณพร้อมใช้งานแล้ว หาก API ไม่แสดง
ให้เปิดใช้โดยทำดังนี้
- ที่ด้านบนของหน้า ให้เลือกเปิดใช้ API เพื่อแสดงแท็บคลัง หรือเลือกคลังจากเมนูด้านซ้าย
- ค้นหา Geocoding API แล้วเลือกจากรายการผลการค้นหา
- เลือกเปิดใช้ เมื่อกระบวนการเสร็จสิ้น Geocoding API จะปรากฏในรายการ API ในแดชบอร์ด
ราคาและนโยบาย
ราคา
ดูข้อมูลเกี่ยวกับนโยบายการกำหนดราคาและการใช้งานสำหรับบริการการเข้ารหัสพิกัดภูมิศาสตร์ JavaScript ได้ที่ การใช้งานและการเรียกเก็บเงิน สำหรับ Geocoding API
นโยบาย
การใช้บริการ Geocoding ต้องเป็นไปตามนโยบายสำหรับ Geocoding API
คำขอเข้ารหัสพิกัดภูมิศาสตร์
การเข้าถึงบริการ Geocoding เป็นแบบไม่พร้อมกัน ซึ่งต้องมีการเรียกไปยังเซิร์ฟเวอร์ภายนอก ด้วยเหตุนี้ geocode จึงส่งคืน Promise ที่จะทำงานเมื่อคำขอเสร็จสมบูรณ์ เมื่อแก้ไขแล้ว คุณจะใช้ .then() หรือ await เพื่อจัดการคำตอบได้
คุณเข้าถึงบริการเข้ารหัสพิกัดภูมิศาสตร์ของ Google Maps API ภายในโค้ดได้โดยใช้ออบเจ็กต์ตัวสร้าง google.maps.Geocoder เมธอด
Geocoder.geocode() จะเริ่มคำขอไปยังบริการเข้ารหัสพิกัดภูมิศาสตร์
โดยส่งออบเจ็กต์ลิเทอรัล GeocoderRequest ที่มี
คำที่ป้อนและเมธอดเรียกกลับเพื่อดำเนินการเมื่อได้รับคำตอบ
ออบเจ็กต์ลิเทอรัล GeocoderRequest มีช่องต่อไปนี้
{ address: string, location: LatLng, placeId: string, bounds: LatLngBounds, componentRestrictions: GeocoderComponentRestrictions, region: string }
พารามิเตอร์ที่ต้องระบุ: คุณต้องระบุฟิลด์ต่อไปนี้ 1 ฟิลด์เท่านั้น
address— ที่อยู่ที่ต้องการเข้ารหัสพิกัดภูมิศาสตร์
หรือ
location—LatLng(หรือLatLngLiteral) ที่คุณต้องการรับที่อยู่ที่ใกล้ที่สุด ซึ่งมนุษย์อ่านได้ โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์จะทำการเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ ดูข้อมูลเพิ่มเติมได้ที่ การแปลงพิกัดทางภูมิศาสตร์ย้อนกลับ
หรือ
placeId— รหัสสถานที่ของสถานที่ที่คุณต้องการ รับที่อยู่ที่ใกล้ที่สุดซึ่งมนุษย์อ่านได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับ การดึงข้อมูลที่อยู่สำหรับรหัสสถานที่
พารามิเตอร์ที่ไม่บังคับ:
bounds— ขอบเขตLatLngBoundsซึ่งจะใช้เพื่อเน้นผลลัพธ์การเข้ารหัสพิกัดภูมิศาสตร์ให้โดดเด่นยิ่งขึ้น พารามิเตอร์boundsจะส่งผลต่อผลลัพธ์จาก Geocoder เท่านั้น แต่จะไม่จำกัดผลลัพธ์โดยสมบูรณ์ ดูข้อมูลเพิ่มเติมเกี่ยวกับ การปรับ Viewport ด้านล่างcomponentRestrictions— ใช้เพื่อจำกัดผลการค้นหาให้แสดงเฉพาะพื้นที่ที่กำหนด ดูข้อมูลเพิ่มเติมเกี่ยวกับ การกรองคอมโพเนนต์ด้านล่างregion- รหัสภูมิภาคที่ระบุเป็นรหัสภูมิภาค Unicode 2 อักขระ (ไม่ใช่ตัวเลข) ในกรณีส่วนใหญ่ แท็กเหล่านี้จะแมปกับค่า 2 อักขระของ ccTLD ("โดเมนระดับบนสุด") ที่คุ้นเคยโดยตรง พารามิเตอร์regionจะส่งผลต่อผลลัพธ์จาก Geocoder เท่านั้น แต่จะไม่จำกัดผลลัพธ์โดยสมบูรณ์ ดูข้อมูลเพิ่มเติมเกี่ยวกับ การปรับรหัสภูมิภาคด้านล่างextraComputations— ค่าที่อนุญาตเพียงค่าเดียวสำหรับพารามิเตอร์นี้คือADDRESS_DESCRIPTORSดูรายละเอียดเพิ่มเติมได้ใน ตัวอธิบายที่อยู่fulfillOnZeroResults— ทำตามสัญญาในสถานะ ZERO_RESULT ใน การตอบกลับ คุณอาจต้องการใช้พารามิเตอร์นี้เนื่องจากแม้จะไม่มีผลการเข้ารหัสพิกัดภูมิศาสตร์ แต่ก็อาจยังมี ฟิลด์ระดับการตอบกลับเพิ่มเติมที่แสดง ดูรายละเอียดเพิ่มเติมได้ที่ ดำเนินการเมื่อไม่มีผลการค้นหา
การตอบกลับการเข้ารหัสพิกัดภูมิศาสตร์
บริการเข้ารหัสพิกัดภูมิศาสตร์ต้องใช้เมธอดเรียกกลับเพื่อดำเนินการเมื่อเรียกข้อมูล
ผลลัพธ์ของ Geocoder โดยการเรียกกลับนี้ควรส่งพารามิเตอร์ 2 รายการเพื่อเก็บ
results และรหัส status ตามลำดับ
ผลการเข้ารหัสพิกัดภูมิศาสตร์
ออบเจ็กต์ GeocoderResult แสดงผลการเข้ารหัสพิกัดภูมิศาสตร์รายการเดียว คำขอรหัสพิกัดภูมิศาสตร์อาจแสดงผลออบเจ็กต์ผลลัพธ์หลายรายการ
results[]: { types[]: string, formatted_address: string, address_components[]: { short_name: string, long_name: string, postcode_localities[]: string, types[]: string }, partial_match: boolean, place_id: string, postcode_localities[]: string, geometry: { location: LatLng, location_type: GeocoderLocationType viewport: LatLngBounds, bounds: LatLngBounds } }
โดยมีคำอธิบายฟิลด์ดังนี้
types[]คืออาร์เรย์ที่ระบุประเภทที่อยู่ของ ผลการค้นหาที่แสดง อาร์เรย์นี้มีชุดแท็กตั้งแต่ 0 รายการขึ้นไป ซึ่งระบุประเภทของฟีเจอร์ที่แสดงในผลลัพธ์ ตัวอย่างเช่น รหัสพิกัดภูมิศาสตร์ของ "ชิคาโก" จะแสดงผล "locality" ซึ่งบ่งชี้ว่า "ชิคาโก" เป็นเมือง และยังแสดงผล "political" ซึ่งบ่งชี้ว่าเป็นหน่วยงานทางการเมือง ดูข้อมูลเพิ่มเติมเกี่ยวกับ ประเภทที่อยู่และประเภทคอมโพเนนต์ของที่อยู่ด้านล่างformatted_addressคือสตริงที่มีที่อยู่ที่มนุษย์อ่านได้ ของสถานที่ตั้งนี้โดยส่วนใหญ่แล้วที่อยู่นี้จะเทียบเท่ากับที่อยู่ทางไปรษณีย์ โปรดทราบว่าบางประเทศ เช่น สหราชอาณาจักร ไม่อนุญาตให้เผยแพร่ที่อยู่ไปรษณีย์จริงเนื่องจากข้อจำกัดด้านการอนุญาตให้ใช้สิทธิ
ที่อยู่ที่จัดรูปแบบแล้วประกอบด้วยคอมโพเนนต์ที่อยู่อย่างน้อย 1 รายการ ตัวอย่างเช่น ที่อยู่ "111 8th Avenue, New York, NY" ประกอบด้วยส่วนประกอบต่อไปนี้ "111" (หมายเลขถนน), "8th Avenue" (เส้นทาง), "New York" (เมือง) และ "NY" (รัฐในสหรัฐอเมริกา)
อย่าแยกวิเคราะห์ที่อยู่ที่จัดรูปแบบแล้วโดยใช้โปรแกรม แต่คุณควรใช้ คอมโพเนนต์ที่อยู่แต่ละรายการ ซึ่งการตอบกลับของ API จะรวมไว้ด้วย นอกเหนือจากฟิลด์ที่อยู่ที่จัดรูปแบบแล้ว
address_components[]คืออาร์เรย์ที่มีคอมโพเนนต์แยกต่างหาก ซึ่งใช้ได้กับที่อยู่นี้โดยทั่วไปแล้ว คอมโพเนนต์ที่อยู่แต่ละรายการจะมีฟิลด์ต่อไปนี้
types[]คืออาร์เรย์ที่ระบุประเภทของ คอมโพเนนต์ที่อยู่ ดูรายการ ประเภทที่รองรับlong_nameคือคำอธิบายข้อความแบบเต็มหรือชื่อของ คอมโพเนนต์ที่อยู่ตามที่ Geocoder แสดงผลshort_nameคือชื่อข้อความแบบย่อสำหรับคอมโพเนนต์ที่อยู่ หากมี ตัวอย่างเช่น คอมโพเนนต์ที่อยู่สำหรับรัฐ อลาสก้าอาจมีlong_nameเป็น "Alaska" และshort_nameเป็น "AK" โดยใช้ตัวย่อทางไปรษณีย์ 2 ตัวอักษร
โปรดทราบข้อเท็จจริงต่อไปนี้เกี่ยวกับอาร์เรย์
address_components[]- อาร์เรย์ของคอมโพเนนต์ที่อยู่อาจมีคอมโพเนนต์มากกว่า
formatted_address - อาร์เรย์ไม่จำเป็นต้องรวมหน่วยงานทางการเมืองทั้งหมดที่มีที่อยู่ นอกเหนือจากหน่วยงานที่รวมอยู่ใน
formatted_addressหากต้องการดึงข้อมูลหน่วยงานทางการเมืองทั้งหมด ที่มีที่อยู่เฉพาะ คุณควรใช้การเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ โดยส่ง ละติจูด/ลองจิจูดของที่อยู่เป็นพารามิเตอร์ในคำขอ - รูปแบบการตอบกลับอาจเปลี่ยนแปลงได้ระหว่างคำขอ โดยเฉพาะอย่างยิ่ง จำนวน
address_componentsจะแตกต่างกันไปตามที่อยู่ที่ขอ และอาจเปลี่ยนแปลงเมื่อเวลาผ่านไปสำหรับ ที่อยู่เดียวกัน คอมโพเนนต์สามารถเปลี่ยนตำแหน่งในอาร์เรย์ได้ ประเภทของคอมโพเนนต์อาจเปลี่ยนแปลงได้ คอมโพเนนต์บางอย่างอาจหายไปในการตอบกลับในภายหลัง
ดูข้อมูลเพิ่มเติมเกี่ยวกับ ประเภทที่อยู่และประเภทคอมโพเนนต์ของที่อยู่ด้านล่าง
-
partial_matchบ่งชี้ว่า Geocoder ไม่ได้แสดงผล การจับคู่ที่ตรงกันทุกประการสำหรับคำขอเดิม แม้ว่าจะจับคู่ส่วนหนึ่งของ ที่อยู่ที่ขอได้ก็ตาม คุณอาจต้องตรวจสอบคำขอเดิมว่ามีการสะกดผิดและ/หรือ ที่อยู่ไม่สมบูรณ์หรือไม่การจับคู่บางส่วนมักเกิดขึ้นกับที่อยู่บนถนนที่ไม่มีอยู่ ในย่านที่คุณส่งในคำขอ ระบบอาจแสดงการจับคู่บางส่วนเมื่อคำขอตรงกับสถานที่ตั้ง 2 แห่งขึ้นไปในพื้นที่เดียวกัน เช่น "Hillpar St, Bristol, UK" จะแสดงการจับคู่บางส่วนสำหรับทั้ง Henry Street และ Henrietta Street โปรดทราบว่าหากคำขอมีองค์ประกอบที่อยู่ซึ่งสะกดผิด บริการเข้ารหัสพิกัดภูมิศาสตร์อาจแนะนำที่อยู่อื่นแทน ระบบจะทำเครื่องหมายคำแนะนำที่ทริกเกอร์ด้วยวิธีนี้ว่าเป็นการจับคู่บางส่วนด้วย
place_idเป็นตัวระบุที่ไม่ซ้ำกันของสถานที่ ซึ่งใช้กับ Google API อื่นๆ ได้ เช่น คุณสามารถใช้place_idกับไลบรารี Google Places API เพื่อดูรายละเอียดของธุรกิจในพื้นที่ เช่น หมายเลขโทรศัพท์ เวลาทำการ รีวิวของผู้ใช้ และอื่นๆ ดูภาพรวมรหัสสถานที่postcode_localities[]คืออาร์เรย์ที่ระบุสถานที่ทั้งหมด ที่อยู่ในรหัสไปรษณีย์ และจะปรากฏเฉพาะเมื่อผลลัพธ์เป็นรหัสไปรษณีย์ ที่มีสถานที่หลายแห่งgeometryมีข้อมูลต่อไปนี้locationมีค่าละติจูด ลองจิจูดที่แปลงเป็นรหัสพิกัดภูมิศาสตร์ โปรดทราบว่าเราจะแสดงผลสถานที่ตั้งนี้เป็นออบเจ็กต์LatLngไม่ใช่สตริงที่มีการจัดรูปแบบlocation_typeจัดเก็บข้อมูลเพิ่มเติมเกี่ยวกับ สถานที่ที่ระบุ ค่าที่รองรับมีดังนี้ROOFTOPแสดงว่า ผลลัพธ์ที่แสดงเป็นรหัสพิกัดภูมิศาสตร์ที่แม่นยำRANGE_INTERPOLATEDระบุว่าผลลัพธ์ที่แสดงเป็นค่าประมาณ (โดยปกติจะอยู่บนถนน) ที่ได้จากการประมาณค่าระหว่างจุดที่แน่นอน 2 จุด (เช่น ทางแยก) โดยทั่วไปแล้ว ระบบจะแสดงผลลัพธ์ที่ประมาณค่าเมื่อ รหัสพิกัดภูมิศาสตร์บนชั้นดาดฟ้าไม่พร้อมใช้งานสำหรับที่อยู่GEOMETRIC_CENTERระบุว่าผลลัพธ์ที่แสดงคือจุดศูนย์กลางทางเรขาคณิตของ ผลลัพธ์ เช่น เส้นหลายส่วน (เช่น ถนน) หรือรูปหลายเหลี่ยม (ภูมิภาค)APPROXIMATEหมายความว่าผลลัพธ์ที่แสดงเป็นค่าประมาณ
viewportจะจัดเก็บวิวพอร์ตที่แนะนำสำหรับ ผลลัพธ์ที่แสดงbounds(แสดงผลหรือไม่ก็ได้) จัดเก็บLatLngBoundsซึ่งสามารถมีผลลัพธ์ที่แสดงผลได้อย่างครบถ้วน โปรดทราบว่าขอบเขตเหล่านี้อาจไม่ตรงกับวิวพอร์ตที่แนะนำ (ตัวอย่างเช่น ซานฟรานซิสโกมีหมู่เกาะฟาราลอน ซึ่งในทางเทคนิคแล้วเป็นส่วนหนึ่งของเมือง แต่ไม่ควรแสดงในวิวพอร์ต)
Geocoder จะแสดงที่อยู่โดยใช้การตั้งค่าภาษาที่ต้องการของเบราว์เซอร์ หรือภาษาที่ระบุเมื่อโหลด JavaScript ของ API โดยใช้พารามิเตอร์ language (ดูข้อมูลเพิ่มเติมได้ที่
การแปล)
ประเภทที่อยู่และประเภทคอมโพเนนต์ของที่อยู่
อาร์เรย์ types[] ใน GeocoderResult ในการตอบกลับจะระบุประเภทที่อยู่
ตัวอย่างประเภทที่อยู่ ได้แก่ ที่อยู่ ถนน ประเทศ หรือหน่วยงานทางการเมือง อาร์เรย์ types ใน GeocoderAddressComponent จะระบุประเภทของแต่ละส่วนของที่อยู่ เช่น หมายเลขถนนหรือประเทศ
ที่อยู่อาจมีได้หลายประเภท ระบบอาจพิจารณาว่าประเภทดังกล่าวเป็น "แท็ก"
เช่น เมืองหลายแห่งติดแท็กประเภท political และ locality
ระบบรองรับประเภทต่อไปนี้และจะแสดงในทั้งอาร์เรย์ ประเภทที่อยู่และประเภทคอมโพเนนต์ของที่อยู่
| ประเภทที่อยู่ | คำอธิบาย |
|---|---|
street_address |
ที่อยู่ที่ถูกต้องแม่นยำ |
route |
เส้นทางที่มีชื่อ (เช่น "US 101") |
intersection |
สี่แยกใหญ่ ซึ่งมักจะเป็นจุดตัดของถนนสายหลัก 2 สาย |
political |
หน่วยงานทางการเมือง โดยปกติแล้ว ประเภทนี้จะระบุรูปหลายเหลี่ยมของการบริหารพลเรือน |
country |
หน่วยงานทางการเมืองระดับประเทศ และโดยปกติจะเป็นประเภทลำดับสูงสุดที่ Geocoder แสดง |
administrative_area_level_1 |
หน่วยงานพลเรือนระดับที่ 1 ที่ต่ำกว่าระดับประเทศ ในสหรัฐอเมริกา ระดับการบริหารเหล่านี้คือรัฐ บางประเทศไม่ได้ใช้การบริหารระดับเหล่านี้ ในกรณีส่วนใหญ่ administrative_area_level_1ชื่อย่อจะตรงกับส่วนย่อย ISO 3166-2 และรายการอื่นๆ ที่เผยแพร่กันอย่างกว้างขวาง อย่างไรก็ตาม เราไม่รับประกันว่าชื่อย่อจะตรงกันเนื่องจากผลการเข้ารหัสพิกัดภูมิศาสตร์ของเราอิงตามสัญญาณและข้อมูลตำแหน่งที่หลากหลาย |
administrative_area_level_2 |
หน่วยงานพลเรือนระดับที่ 2 ที่ต่ำกว่าระดับประเทศ ในสหรัฐอเมริกา ระดับการบริหารเหล่านี้คือเทศมณฑล บางประเทศไม่ได้ใช้การบริหารระดับเหล่านี้ |
administrative_area_level_3 |
หน่วยงานพลเรือนระดับที่ 3 ที่ต่ำกว่าระดับประเทศ ประเภทนี้ระบุเขตการปกครองย่อย บางประเทศไม่ได้ใช้การบริหารระดับเหล่านี้ |
administrative_area_level_4 |
หน่วยงานพลเรือนระดับที่ 4 ที่ต่ำกว่าระดับประเทศ ประเภทนี้ระบุเขตการปกครองย่อย บางประเทศไม่ได้ใช้การบริหารระดับเหล่านี้ |
administrative_area_level_5 |
หน่วยงานพลเรือนระดับที่ 5 ที่ต่ำกว่าระดับประเทศ ประเภทนี้ระบุเขตการปกครองย่อย บางประเทศไม่ได้ใช้การบริหารระดับเหล่านี้ |
administrative_area_level_6 |
หน่วยงานพลเรือนระดับที่ 6 ที่ต่ำกว่าระดับประเทศ ประเภทนี้ระบุเขตการปกครองย่อย บางประเทศไม่ได้ใช้การบริหารระดับเหล่านี้ |
administrative_area_level_7 |
หน่วยงานพลเรือนระดับที่ 7 ที่ต่ำกว่าระดับประเทศ ประเภทนี้ระบุเขตการปกครองย่อย บางประเทศไม่ได้ใช้การบริหารระดับเหล่านี้ |
colloquial_area |
ชื่ออื่นที่ใช้กันโดยทั่วไปสำหรับเอนทิตี |
locality |
หน่วยงานทางการเมืองของเมืองหรือเทศบาลที่จดทะเบียน |
sublocality |
หน่วยงานพลเรือนระดับที่ 1 ที่ต่ำกว่าระดับท้องถิ่น บางสถานที่อาจได้รับประเภทเพิ่มเติมอย่างใดอย่างหนึ่งต่อไปนี้ sublocality_level_1 ถึง sublocality_level_5 ระดับเขตย่อยแต่ละระดับเป็นหน่วยงานพลเรือน ตัวเลขที่มากขึ้นแสดงถึงพื้นที่ทางภูมิศาสตร์ที่เล็กลง |
neighborhood |
ย่านที่มีชื่อ |
premise |
สถานที่ที่มีชื่อ ซึ่งมักจะเป็นอาคารหรือกลุ่มอาคารที่มีชื่อร่วมกัน |
subpremise |
หน่วยที่อยู่ซึ่งอยู่ต่ำกว่าระดับสถานที่ เช่น อพาร์ตเมนต์ ยูนิต หรือห้องชุด |
plus_code |
การอ้างอิงตำแหน่งที่เข้ารหัสซึ่งได้มาจากละติจูดและลองจิจูด คุณใช้ Plus Codes แทนที่อยู่ได้ในสถานที่ที่ไม่มีที่อยู่ (ไม่มีการระบุหมายเลขอ้างอิงอาคารหรือไม่มีการตั้งชื่อถนน) ดูรายละเอียดได้ที่ https://plus.codes |
postal_code |
รหัสไปรษณีย์ที่ใช้ในการส่งจดหมายภายในประเทศ |
natural_feature |
องค์ประกอบทางธรรมชาติที่โดดเด่น |
airport |
สนามบิน |
park |
สวนสาธารณะที่มีชื่อ |
point_of_interest |
จุดที่น่าสนใจที่มีชื่อ โดยปกติแล้ว "POI" เหล่านี้จะเป็นหน่วยงานท้องถิ่นที่มีชื่อเสียงซึ่งไม่สามารถจัดอยู่ในหมวดหมู่อื่นๆ ได้ง่าย เช่น "ตึกเอ็มไพร์สเตต" หรือ "หอไอเฟล" |
รายการประเภทที่ว่างเปล่าแสดงว่าไม่มีประเภทที่รู้จักสำหรับคอมโพเนนต์ที่อยู่เฉพาะเจาะจง (เช่น Lieu-dit ในฝรั่งเศส)
นอกจากข้างต้นแล้ว คอมโพเนนต์ที่อยู่อาจมีประเภทต่อไปนี้
หมายเหตุ: รายการนี้ไม่ได้ครอบคลุมข้อมูลทั้งหมดและอาจมีการเปลี่ยนแปลง
นอกจากข้อมูลข้างต้นแล้ว คอมโพเนนต์ของที่อยู่อาจมีประเภทที่ระบุไว้ด้านล่างด้วย
| ประเภทส่วนประกอบของที่อยู่ | คำอธิบาย |
|---|---|
floor |
ชั้นของที่อยู่อาคาร |
establishment |
โดยปกติแล้วจะเป็นสถานที่ที่ยังไม่ได้จัดหมวดหมู่ |
landmark |
สถานที่ใกล้เคียงที่ใช้เป็นข้อมูลอ้างอิงเพื่อช่วยในการนำทาง |
point_of_interest |
จุดที่น่าสนใจที่มีชื่อ |
parking |
ที่จอดรถหรืออาคารจอดรถ |
post_box |
ตู้ไปรษณีย์ที่เฉพาะเจาะจง |
postal_town |
การจัดกลุ่มพื้นที่ทางภูมิศาสตร์ เช่น locality และ sublocality ซึ่งใช้สำหรับที่อยู่ในการจัดส่งในบางประเทศ |
room |
ห้องของที่อยู่อาคาร |
street_number |
หมายเลขถนนที่แน่นอน |
bus_station, train_station และ transit_station |
ตำแหน่งของป้ายรถประจำทาง รถไฟ หรือป้ายจอดขนส่งสาธารณะ |
รหัสสถานะ
โค้ด status อาจแสดงค่าใดค่าหนึ่งต่อไปนี้
"OK"แสดงว่าไม่มีข้อผิดพลาดเกิดขึ้น ระบบแยกวิเคราะห์ที่อยู่ได้สำเร็จและแสดงรหัสพิกัดภูมิศาสตร์อย่างน้อย 1 รายการ"ZERO_RESULTS"หมายความว่าการแปลงรหัสพิกัดภูมิศาสตร์สำเร็จแต่ไม่พบผลลัพธ์ ปัญหานี้อาจเกิดขึ้นหากมีการส่งaddressที่ไม่มีอยู่จริงไปยัง Geocoder"OVER_QUERY_LIMIT"แสดงว่าคุณใช้พื้นที่เก็บข้อมูลเกินโควต้า"REQUEST_DENIED"แสดงว่าคำขอของคุณถูกปฏิเสธ หน้าเว็บไม่ได้รับอนุญาตให้ใช้ Geocoder"INVALID_REQUEST"โดยทั่วไปจะบ่งชี้ว่าไม่มีการค้นหา (address,componentsหรือlatlng)"UNKNOWN_ERROR"แสดงว่าประมวลผลคำขอไม่ได้เนื่องจากข้อผิดพลาดเกี่ยวกับเซิร์ฟเวอร์ คำขออาจสำเร็จหากคุณ ลองอีกครั้ง"ERROR"แสดงว่าคำขอหมดเวลาหรือเกิด ปัญหาในการติดต่อกับเซิร์ฟเวอร์ของ Google คำขออาจสำเร็จหากคุณ ลองอีกครั้ง
ตัวอย่างการเข้ารหัสพิกัดภูมิศาสตร์
ตัวอย่างต่อไปนี้แสดงการแปลงที่อยู่เป็นพิกัดทางภูมิศาสตร์และการวางเครื่องหมายที่ค่าละติจูดและลองจิจูดที่แสดงผล ระบบจะจัดการผลการเข้ารหัสพิกัดภูมิศาสตร์โดยใช้ Promise คลิกที่ใดก็ได้ บนแผนที่เพื่อเข้ารหัสพิกัดภูมิศาสตร์ของที่อยู่ในตำแหน่งนั้น
TypeScript
async function geocode(request: google.maps.GeocoderRequest) { clear(); geocoder .geocode(request) .then((result) => { const { results } = result; innerMap.setCenter(results[0].geometry.location); marker.position = new google.maps.LatLng(results[0].geometry.location); mapElement.append(marker); responseDiv.style.display = 'block'; response.innerText = JSON.stringify(result, null, 2); return results; }) .catch((e) => { alert('Geocode was not successful for the following reason: ' + e); }); }
JavaScript
async function geocode(request) { clear(); geocoder .geocode(request) .then((result) => { const { results } = result; innerMap.setCenter(results[0].geometry.location); marker.position = new google.maps.LatLng(results[0].geometry.location); mapElement.append(marker); responseDiv.style.display = 'block'; response.innerText = JSON.stringify(result, null, 2); return results; }) .catch((e) => { alert('Geocode was not successful for the following reason: ' + e); }); }
การเอนเอียงวิวพอร์ต
คุณสามารถสั่งให้บริการเข้ารหัสพิกัดภูมิศาสตร์แสดงผลลัพธ์ภายในวิวพอร์ตที่ระบุ (แสดงเป็นกรอบล้อมรอบ) โดยทำได้ด้วยการตั้งค่าพารามิเตอร์ bounds ภายในออบเจ็กต์ GeocoderRequest
ตามตัวอักษรเพื่อกำหนดขอบเขตของวิวพอร์ตนี้ โปรดทราบว่าการเอนเอียงจะเลือกเฉพาะผลลัพธ์ที่อยู่ภายในขอบเขตเท่านั้น หากมีผลลัพธ์ที่เกี่ยวข้องมากกว่าอยู่นอกขอบเขตเหล่านี้ ระบบอาจรวมผลลัพธ์เหล่านั้นไว้ด้วย
ตัวอย่างเช่น รหัสพิกัดภูมิศาสตร์สำหรับ "วินเนตกา" โดยทั่วไปจะแสดงย่านชานเมืองของชิคาโกต่อไปนี้
{ "types":["locality","political"], "formatted_address":"Winnetka, IL, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["locality","political"] },{ "long_name":"Illinois", "short_name":"IL", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location":[ -87.7417070, 42.1083080], "location_type":"APPROXIMATE" }, "place_id": "ChIJW8Va5TnED4gRY91Ng47qy3Q" }
อย่างไรก็ตาม การระบุพารามิเตอร์ bounds ที่กำหนดกรอบล้อมรอบ
สำหรับหุบเขาซานเฟอร์นันโดในลอสแองเจลิสจะทำให้รหัสพิกัดภูมิศาสตร์นี้แสดงผล
ย่านที่ชื่อ "วินเนตกา" ในสถานที่ดังกล่าว
{ "types":["sublocality","political"], "formatted_address":"Winnetka, California, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["sublocality","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_3","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_2","political"] },{ "long_name":"California", "short_name":"CA", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location": [34.213171,-118.571022], "location_type":"APPROXIMATE" }, "place_id": "ChIJ0fd4S_KbwoAR2hRDrsr3HmQ" }
การให้น้ำหนักพิเศษกับรหัสภูมิภาค
คุณตั้งค่าบริการเข้ารหัสพิกัดภูมิศาสตร์ให้แสดงผลลัพธ์ที่ให้น้ำหนักไปทางภูมิภาคใดภูมิภาคหนึ่งโดยเฉพาะได้อย่างชัดเจนโดยใช้พารามิเตอร์ region พารามิเตอร์นี้
ใช้รหัสภูมิภาคที่ระบุเป็นแท็กย่อยของภูมิภาค Unicode แบบ 2 อักขระ (ไม่ใช่ตัวเลข)
แท็กเหล่านี้จะแมปกับค่า ccTLD ("โดเมนระดับบนสุด") ที่คุ้นเคย
แบบ 2 อักขระโดยตรง เช่น "uk" ใน "co.uk" ในบางกรณี แท็ก
region ยังรองรับรหัส ISO-3166-1 ซึ่งบางครั้ง
อาจแตกต่างจากค่า ccTLD ("GB" สำหรับ "Great Britain" เป็นต้น)
เมื่อใช้พารามิเตอร์ region ให้ทำดังนี้
- ระบุประเทศหรือภูมิภาคเพียงรายการเดียว ระบบจะไม่สนใจค่าหลายค่า และอาจส่งผลให้คำขอไม่สำเร็จ
- ใช้เฉพาะแท็กย่อยของภูมิภาค 2 อักขระ (รูปแบบ CLDR ของ Unicode) อินพุตอื่นๆ ทั้งหมดจะทำให้เกิดข้อผิดพลาด
- รองรับเฉพาะประเทศและภูมิภาคที่ระบุไว้ในรายละเอียดความครอบคลุมของ Google Maps Platform เท่านั้น
คุณสามารถส่งคำขอเข้ารหัสพิกัดภูมิศาสตร์สำหรับทุกโดเมนที่แอปพลิเคชัน Google Maps หลักมีการเข้ารหัสพิกัดภูมิศาสตร์ โปรดทราบว่าการเอนเอียงจะต้องการเฉพาะผลลัพธ์สำหรับโดเมนที่เฉพาะเจาะจงเท่านั้น หากมีผลลัพธ์ที่เกี่ยวข้องมากกว่าอยู่นอกโดเมนนี้ ระบบอาจรวมผลลัพธ์เหล่านั้นไว้ด้วย
ตัวอย่างเช่น รหัสพิกัดภูมิศาสตร์สำหรับ "Toledo" จะแสดงผลลัพธ์นี้ เนื่องจากโดเมนเริ่มต้น ของบริการเข้ารหัสพิกัดภูมิศาสตร์ตั้งค่าเป็นสหรัฐอเมริกา
{ "types":["locality","political"], "formatted_address":"Toledo, OH, USA", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Ohio", "short_name":"OH", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "place_id": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw" }
รหัสพิกัดภูมิศาสตร์สำหรับ "Toledo" ที่มีregionฟิลด์ตั้งค่าเป็น
'es' (สเปน) จะแสดงเมืองในสเปน
{ "types":["locality","political"], "formatted_address":"Toledo, España", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Toledo", "short_name":"TO", "types":["administrative_area_level_2","political"] },{ "long_name":"Castilla-La Mancha", "short_name":"CM", "types":["administrative_area_level_1","political"] },{ "long_name":"España", "short_name":"ES", "types":["country","political"] }], "place_id": "ChIJ8f21C60Lag0R_q11auhbf8Y" }
การกรองคอมโพเนนต์
คุณตั้งค่าบริการเข้ารหัสพิกัดภูมิศาสตร์ให้แสดงผลลัพธ์ที่อยู่ซึ่งจำกัด
ไว้ในพื้นที่ที่เฉพาะเจาะจงได้โดยใช้ตัวกรองคอมโพเนนต์ ระบุตัวกรองในพารามิเตอร์
componentRestrictions ค่าตัวกรองรองรับ
วิธีการแก้ไขการสะกดและการจับคู่บางส่วนแบบเดียวกับคำขอ Geocoding อื่นๆ
Geocoder จะแสดงเฉพาะผลลัพธ์ที่ตรงกับตัวกรองคอมโพเนนต์ทั้งหมด กล่าวคือ จะประเมินข้อกำหนดของตัวกรองเป็น AND ไม่ใช่ OR
ตัวกรองคอมโพเนนต์ประกอบด้วยรายการต่อไปนี้อย่างน้อย 1 รายการ
routeตรงกับชื่อแบบยาวหรือแบบย่อของเส้นทางlocalityจะจับคู่กับประเภทท้องถิ่นและประเภทเขตย่อยadministrativeAreaตรงกับระดับพื้นที่ การปกครองทั้งหมดpostalCodeตรงกับรหัสไปรษณีย์และคำนำหน้ารหัสไปรษณีย์countryตรงกับชื่อประเทศหรือรหัสประเทศ 2 ตัวอักษรตามมาตรฐาน ISO 3166-1 หมายเหตุ: API เป็นไปตามมาตรฐาน ISO สำหรับ การกำหนดประเทศ และการกรองจะทำงานได้ดีที่สุดเมื่อใช้ รหัส ISO ที่เกี่ยวข้องของประเทศ
ตัวอย่างต่อไปนี้แสดงการใช้พารามิเตอร์
componentRestrictions เพื่อกรองตาม
country และ postalCode
async function codeAddress(request: google.maps.GeocoderRequest) { clear(); geocoder.geocode({ componentRestrictions: { country: 'AU', postalCode: '2000' } }) .then((result) => { const { results } = result; innerMap.setCenter(results[0].geometry.location); let marker = new google.maps.marker.AdvancedMarkerElement({ map: innerMap, position: results[0].geometry.location }); }) .catch((e) => { alert('Geocode was not successful for the following reason: ' + e); }); };
ดำเนินการเมื่อไม่มีผลการค้นหา
สำหรับการเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ โดยค่าเริ่มต้น ระบบจะหยุดการทำงานของ Promise ที่ status=ZERO_RESULTS อย่างไรก็ตาม
ในกรณีนี้ ระบบอาจยังคงป้อนข้อมูลในช่องระดับการตอบกลับเพิ่มเติมของ plus_code และ address_descriptor
หากระบุค่าเป็น "จริง" สำหรับพารามิเตอร์ fulfillOnZeroResults
ระบบจะป้อนข้อมูลในกรณีนี้ หากระบุค่าเป็นจริงสำหรับพารามิเตอร์ fulfillOnZeroResults
สัญญาจะไม่ถูกละเมิด และจะเข้าถึงช่องเพิ่มเติมเหล่านี้ได้จากสัญญาหากมี
ตัวอย่างลักษณะการทำงานนี้สำหรับละติจูด/ลองจิจูดในทวีปแอนตาร์กติกาแสดงไว้ด้านล่าง
แม้จะไม่มีผลลัพธ์การแปลงพิกัดทางภูมิศาสตร์ย้อนกลับ แต่เราก็ยังพิมพ์รหัสบวก
ในสัญญาได้หากตั้งค่า fulfillOnZeroResults=true
function addressDescriptorReverseGeocoding() { var latlng = new google.maps.LatLng(-75.290330, 38.653861); geocoder .geocode({ 'location': latlng, 'fulfillOnZeroResults': true, }) .then((response) => { console.log(response.plus_code); }) .catch((error) => { window.alert(`Error: ${error}`); }); }
ตัวบอกที่อยู่
ตัวอธิบายที่อยู่มีข้อมูลเพิ่มเติมที่ช่วยอธิบายสถานที่ โดยใช้จุดสังเกตและพื้นที่ ดูการสาธิตตัวอธิบายที่อยู่ เพื่อสำรวจฟีเจอร์นี้
คุณเปิดใช้ตัวอธิบายที่อยู่ได้โดยใช้พารามิเตอร์ extraComputations
ใส่ extra_computations=ADDRESS_DESCRIPTORS ในคำขอการเข้ารหัสพิกัดภูมิศาสตร์
คำขอการเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ
หรือคำขอการเข้ารหัสพิกัดภูมิศาสตร์ของสถานที่
เพื่อรับตัวอธิบายที่อยู่ในคำตอบ
ตัวอย่างในการเข้ารหัสพิกัดภูมิศาสตร์ของสถานที่
คำค้นหาต่อไปนี้มีที่อยู่ของสถานที่ในเดลี
function addressDescriptorPlaceIdLookup() { geocoder.geocode({ geocoder.geocode({ 'placeId': 'ChIJyxAX8Bj9DDkRgBfAnBYa66Q', 'extraComputations': ['ADDRESS_DESCRIPTORS'] }, function(results, status) { if (status == 'OK') { console.log(results[0].address_descriptor); } else { window.alert('Geocode was not successful for the following reason: ' + status); } }); }
ตัวอย่างในการเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ
คำค้นหาต่อไปนี้มีค่าละติจูด/ลองจิจูดสำหรับสถานที่ใน เดลี
function addressDescriptorReverseGeocoding() { var latlng = new google.maps.LatLng(28.640964,77.235875); geocoder .geocode({ 'location': latlng, 'extraComputations': ["ADDRESS_DESCRIPTORS"], }) .then((response) => { console.log(response.address_descriptor); }) .catch((error) => { window.alert(`Error`); }); }
ตัวอย่าง Address Descriptor
ตัวอย่างaddress_descriptorมีดังนี้
{ "address_descriptor" : { "areas" : [ { "containment" : "OUTSKIRTS", "display_name" : { "language_code" : "en", "text" : "Turkman Gate" }, "place_id" : "ChIJ_7LLvyb9DDkRMKKxP9YyXgs" }, { "containment" : "OUTSKIRTS", "display_name" : { "language_code" : "en", "text" : "Chandni Chowk" }, "place_id" : "ChIJWcXciBr9DDkRUb4dCDykTwI" }, { "containment" : "NEAR", "display_name" : { "language_code" : "en", "text" : "Katar Ganj" }, "place_id" : "ChIJH3cWUyH9DDkRaw-9CjvcRvY" } ], "landmarks" : [ { "display_name" : { "language_code" : "en", "text" : "Delite Cinema" }, "straight_line_distance_meters" : 29.9306755065918, "place_id" : "ChIJLfiYDCT9DDkROoEa7NdupUM", "travel_distance_meters" : 418.7794799804688, "spatial_relationship" : "ACROSS_THE_ROAD", "types" : [ "establishment", "movie_theater", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "YES Bank" }, "straight_line_distance_meters" : 66.83731079101562, "place_id" : "ChIJFYHM3yb9DDkRRKGkZl2mpSQ", "travel_distance_meters" : 489.0340270996094, "spatial_relationship" : "DOWN_THE_ROAD", "types" : [ "bank", "establishment", "finance", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "UCO Bank" }, "straight_line_distance_meters" : 25.38849639892578, "place_id" : "ChIJ-c6_wCb9DDkRjIk1LeqRtGM", "travel_distance_meters" : 403.2246398925781, "spatial_relationship" : "ACROSS_THE_ROAD", "types" : [ "atm", "bank", "establishment", "finance", "point_of_interest" ] }, { "display_name" : { "language_code" : "en", "text" : "Delhi By Cycle Meeting Point" }, "straight_line_distance_meters" : 44.02867126464844, "place_id" : "ChIJNxVfkSb9DDkRJD22l-eGFdM", "travel_distance_meters" : 97.41281890869141, "spatial_relationship" : "AROUND_THE_CORNER", "types" : [ "establishment", "point_of_interest", "tourist_attraction", "travel_agency" ] }, { "display_name" : { "language_code" : "en", "text" : "Axis Bank Branch" }, "straight_line_distance_meters" : 102.3495178222656, "place_id" : "ChIJr3uaDCT9DDkR8roHTVSn1x4", "travel_distance_meters" : 330.8566284179688, "spatial_relationship" : "DOWN_THE_ROAD", "types" : [ "bank", "establishment", "finance", "point_of_interest" ] } ] } }
ออบเจ็กต์ address_descriptor แต่ละรายการมีอาร์เรย์ 2 รายการ ได้แก่ landmarks และ
areas อาร์เรย์ landmarks มีผลการค้นหาสูงสุด 5 รายการที่จัดอันดับตามลำดับความเกี่ยวข้องโดยพิจารณาจากระยะทางไปยังพิกัดที่ขอ ความโดดเด่นของสถานที่สำคัญ และการมองเห็น ผลการค้นหาแต่ละรายการจะมีค่าต่อไปนี้
place_idคือรหัสสถานที่ของผลการค้นหาสถานที่สำคัญ ดูภาพรวมรหัสสถานที่display_nameคือชื่อที่แสดงของสถานที่สำคัญ และมีlanguage_codeและtextstraight_line_distance_metersคือระยะทางแบบจุดต่อจุดเป็นเมตรระหว่างพิกัดอินพุตกับผลลัพธ์ของจุดสังเกตtravel_distance_metersคือระยะทางเป็นเมตรตามที่เดินทางโดยใช้เครือข่ายถนน (ไม่สนใจข้อจำกัดของถนน) ระหว่างพิกัดที่ป้อนและผลลัพธ์ของสถานที่สำคัญspatial_relationshipคือความสัมพันธ์โดยประมาณระหว่างพิกัดอินพุตกับผลลัพธ์ของแลนด์มาร์ก"NEAR"คือความสัมพันธ์เริ่มต้นเมื่อไม่มีข้อใดต่อไปนี้"WITHIN"เมื่อพิกัดอินพุตอยู่ภายในขอบเขตของโครงสร้างที่เชื่อมโยงกับจุดสังเกต"BESIDE"เมื่อพิกัดอินพุตอยู่ติดกับสถานที่สำคัญหรือจุดเข้าถึงของสถานที่สำคัญโดยตรง"ACROSS_THE_ROAD"เมื่อพิกัดอินพุตอยู่ตรงข้ามกับสถานที่สำคัญในอีกฝั่งของเส้นทาง"DOWN_THE_ROAD"เมื่อพิกัดอินพุตอยู่ตามเส้นทางเดียวกับสถานที่สำคัญ แต่ไม่ใช่"BESIDES"หรือ"ACROSS_THE_ROAD""AROUND_THE_CORNER"เมื่อพิกัดอินพุตอยู่ตามเส้นทางที่ตั้งฉากกับสถานที่สำคัญ (จำกัดการเลี้ยวเพียงครั้งเดียว)"BEHIND"เมื่อพิกัดอินพุตอยู่ใกล้กับสถานที่สำคัญในเชิงพื้นที่ แต่ไกลจากจุดเข้าถึงtypesคือประเภทสถานที่ของสถานที่สำคัญ
ออบเจ็กต์ areas มีคำตอบได้สูงสุด 3 รายการและจำกัดเฉพาะสถานที่ที่
แสดงถึงภูมิภาคขนาดเล็ก เช่น ย่าน เขตย่อย และคอมเพล็กซ์ขนาดใหญ่
ระบบจะแสดงพื้นที่ที่มีพิกัดที่ขอเป็นอันดับแรกและ
เรียงจากเล็กไปใหญ่ areas ผลลัพธ์แต่ละรายการจะมีค่าต่อไปนี้
place_idคือรหัสสถานที่ของผลลัพธ์พื้นที่ ดูภาพรวมรหัสสถานที่display_nameคือชื่อที่แสดงของพื้นที่และมีlanguage_codeและtextcontainmentคือความสัมพันธ์ของการบรรจุโดยประมาณระหว่างพิกัดอินพุตกับผลลัพธ์ของพื้นที่"NEAR"คือความสัมพันธ์เริ่มต้นเมื่อไม่มีข้อใดต่อไปนี้"WITHIN"เมื่อพิกัดอินพุตอยู่ใกล้กับกึ่งกลางของพื้นที่"OUTSKIRTS"เมื่อพิกัดอินพุตอยู่ใกล้ขอบของพื้นที่
ความครอบคลุมของตัวอธิบายที่อยู่
ตัวอธิบายที่อยู่จะอยู่ใน GA สำหรับอินเดีย การใช้ตัวอธิบายที่อยู่ในอินเดียจะไม่มีค่าใช้จ่ายเพิ่มเติม และการใช้งานจะครอบคลุมโดย SKU ของ Geocoding (อินเดีย) Essentials ที่มีอยู่
ความคิดเห็น
ฟีเจอร์นี้พร้อมให้บริการในทุกภูมิภาค ฟีเจอร์นี้พร้อมให้บริการแก่ผู้ใช้ในอินเดียแล้ว และอยู่ในระยะทดลองก่อนเวอร์ชันสำหรับผู้ใช้ทั่วไป สำหรับภูมิภาคอื่นๆ ทั้งหมด เรายินดีรับฟังความคิดเห็น
- หากมีปัญหาที่เกี่ยวข้องกับภูมิภาคอินเดียเท่านั้น โปรดติดต่อทีมสนับสนุน
- หากต้องการส่งความคิดเห็นเกี่ยวกับรุ่นทดลอง โปรดส่งอีเมลถึงเราที่ address-descriptors-feedback@google.com
- ดูข้อมูลเพิ่มเติมได้ที่รายละเอียดความครอบคลุมของตัวอธิบายที่อยู่
การเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ (การค้นหาที่อยู่)
โดยทั่วไป คำว่าการเข้ารหัสพิกัดภูมิศาสตร์หมายถึงการแปลงที่อยู่ที่มนุษย์อ่านได้ เป็นตำแหน่งบนแผนที่ กระบวนการทำสิ่งที่ตรงกันข้าม คือการแปลงตำแหน่งบนแผนที่เป็นที่อยู่ที่ผู้ใช้เข้าใจได้ เรียกว่า การเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ
ให้ระบุคู่ละติจูด/ลองจิจูดที่คั่นด้วยคอมมาในพารามิเตอร์ location แทนการระบุ address เป็นข้อความ
ตัวอย่างต่อไปนี้จะเข้ารหัสพิกัดภูมิศาสตร์ค่าละติจูด/ลองจิจูด และจัดกึ่งกลาง แผนที่ที่ตำแหน่งนั้น โดยจะแสดงหน้าต่างข้อมูลพร้อมที่อยู่ที่จัดรูปแบบแล้ว คลิกที่ใดก็ได้บนแผนที่เพื่อเข้ารหัสพิกัดภูมิศาสตร์ของสถานที่ หรือป้อนพิกัดของคุณเอง
TypeScript
let marker; async function initMap() { // Request the needed libraries. const [{ Map, InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] = await Promise.all([ google.maps.importLibrary( 'maps' ) as Promise<google.maps.MapsLibrary>, google.maps.importLibrary( 'geocoding' ) as Promise<google.maps.GeocodingLibrary>, google.maps.importLibrary( 'marker' ) as Promise<google.maps.MarkerLibrary>, ]); // Get the gmp-map element. const mapElement = document.querySelector( 'gmp-map' ) as google.maps.MapElement; // Get the inner map. const innerMap = mapElement.innerMap; // Get the latlng input box. const latLngQuery = document.getElementById('latlng') as HTMLInputElement; // Get the submit button. const submitButton = document.getElementById('submit') as HTMLElement; // Set the cursor to crosshair. innerMap.setOptions({ draggableCursor: 'crosshair', zoom: 13, mapTypeControl: false, }); // Create a marker for re-use. marker = new AdvancedMarkerElement({ map: innerMap, }); marker.anchorTop = "40px"; const geocoder = new Geocoder(); const infowindow = new InfoWindow(); // Add a click event listener to the submit button. submitButton.addEventListener('click', () => { geocodeLatLng(geocoder, innerMap, infowindow); }); // Add a click event listener to the map. innerMap.addListener('click', (event) => { latLngQuery.value = `${event.latLng.lat()}, ${event.latLng.lng()}`; geocodeLatLng(geocoder, innerMap, infowindow); }); // Make an initial request upon loading. geocodeLatLng(geocoder, innerMap, infowindow); } async function geocodeLatLng( geocoder: google.maps.Geocoder, map: google.maps.Map, infowindow: google.maps.InfoWindow ) { const input = (document.getElementById('latlng') as HTMLInputElement).value; const latlngStr = input.split(',', 2); const latlng = { lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1]), }; geocoder .geocode({ location: latlng }) .then((response) => { if (response.results[0]) { marker.position = latlng; map.setCenter(latlng); infowindow.setContent(response.results[0].formatted_address); infowindow.open(map, marker); } else { window.alert('No results found'); } }) .catch((e) => window.alert('Geocoder failed due to: ' + e)); } initMap();
JavaScript
let marker; async function initMap() { // Request the needed libraries. const [{ Map, InfoWindow }, { Geocoder }, { AdvancedMarkerElement }] = await Promise.all([ google.maps.importLibrary('maps'), google.maps.importLibrary('geocoding'), google.maps.importLibrary('marker'), ]); // Get the gmp-map element. const mapElement = document.querySelector('gmp-map'); // Get the inner map. const innerMap = mapElement.innerMap; // Get the latlng input box. const latLngQuery = document.getElementById('latlng'); // Get the submit button. const submitButton = document.getElementById('submit'); // Set the cursor to crosshair. innerMap.setOptions({ draggableCursor: 'crosshair', zoom: 13, mapTypeControl: false, }); // Create a marker for re-use. marker = new AdvancedMarkerElement({ map: innerMap, }); marker.anchorTop = "40px"; const geocoder = new Geocoder(); const infowindow = new InfoWindow(); // Add a click event listener to the submit button. submitButton.addEventListener('click', () => { geocodeLatLng(geocoder, innerMap, infowindow); }); // Add a click event listener to the map. innerMap.addListener('click', (event) => { latLngQuery.value = `${event.latLng.lat()}, ${event.latLng.lng()}`; geocodeLatLng(geocoder, innerMap, infowindow); }); // Make an initial request upon loading. geocodeLatLng(geocoder, innerMap, infowindow); } async function geocodeLatLng(geocoder, map, infowindow) { const input = document.getElementById('latlng').value; const latlngStr = input.split(',', 2); const latlng = { lat: parseFloat(latlngStr[0]), lng: parseFloat(latlngStr[1]), }; geocoder .geocode({ location: latlng }) .then((response) => { if (response.results[0]) { marker.position = latlng; map.setCenter(latlng); infowindow.setContent(response.results[0].formatted_address); infowindow.open(map, marker); } else { window.alert('No results found'); } }) .catch((e) => window.alert('Geocoder failed due to: ' + e)); } initMap();
ลองใช้ตัวอย่าง
โปรดทราบว่าในตัวอย่างก่อนหน้า เราแสดงผลลัพธ์แรกโดย
เลือก results[0] Geocoder แบบย้อนกลับมักจะแสดงผลลัพธ์มากกว่า 1 รายการ
ที่อยู่ที่เข้ารหัสพิกัดภูมิศาสตร์ไม่ใช่แค่ที่อยู่ไปรษณีย์ แต่เป็นวิธีตั้งชื่อสถานที่ทางภูมิศาสตร์ เช่น เมื่อทำการเข้ารหัสพิกัดภูมิศาสตร์ของจุดในเมืองชิคาโก ระบบอาจติดป้ายกำกับจุดที่เข้ารหัสพิกัดภูมิศาสตร์เป็นที่อยู่
บนถนน เป็นเมือง (ชิคาโก) เป็นรัฐ (อิลลินอยส์) หรือเป็นประเทศ (สหรัฐอเมริกา) ทั้งหมดเป็นที่อยู่ที่ส่งไปยัง Geocoder เครื่องมือระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับจะแสดงผลลัพธ์ทั้งหมด
เหล่านี้
เครื่องมือระบุพิกัดภูมิศาสตร์แบบย้อนกลับจะจับคู่หน่วยงานทางการเมือง (ประเทศ จังหวัด เมือง และย่าน) ที่อยู่ และรหัสไปรษณีย์
ตัวอย่างรายการที่อยู่ที่การค้นหาข้างต้นอาจแสดงมีดังนี้
results[0].formatted_address: "277 Bedford Ave, Brooklyn, NY 11211, USA" results[1].formatted_address: "Grand St/Bedford Av, Brooklyn, NY 11211, USA" results[2].formatted_address: "Williamsburg, Brooklyn, NY, USA" results[3].formatted_address: "Brooklyn, NY, USA" results[4].formatted_address: "New York, NY, USA" results[5].formatted_address: "Brooklyn, NY 11211, USA" results[6].formatted_address: "Kings County, NY, USA" results[7].formatted_address: "New York-Northern New Jersey-Long Island, NY-NJ-PA, USA" results[8].formatted_address: "New York Metropolitan Area, USA" results[9].formatted_address: "New York, USA"
ระบบจะแสดงที่อยู่ในลำดับที่ตรงกันมากที่สุดไปจนถึงน้อยที่สุด โดยทั่วไป
ที่อยู่ที่แน่นอนที่สุดจะเป็นผลลัพธ์ที่โดดเด่นที่สุด ดังเช่นในกรณีนี้
โปรดทราบว่าเราจะแสดงที่อยู่ประเภทต่างๆ ตั้งแต่ที่อยู่ถนนที่เฉพาะเจาะจงที่สุดไปจนถึงหน่วยงานทางการเมืองที่เฉพาะเจาะจงน้อยกว่า เช่น ย่าน เมือง เขต รัฐ ฯลฯ หากต้องการจับคู่ที่อยู่ที่ทั่วไปมากกว่า คุณอาจต้องตรวจสอบฟิลด์ results[].types
หมายเหตุ: การเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับไม่ใช่ วิทยาศาสตร์ที่แน่นอน ตัวเข้ารหัสพิกัดภูมิศาสตร์จะพยายามค้นหาสถานที่ที่ระบุที่อยู่ได้ใกล้ที่สุด ภายในค่าความคลาดเคลื่อนที่กำหนด
การดึงข้อมูลที่อยู่สำหรับรหัสสถานที่
ระบุ placeId เพื่อค้นหาที่อยู่สำหรับรหัสสถานที่ที่ระบุ
รหัสสถานที่คือตัวระบุที่ไม่ซ้ำกันซึ่งใช้กับ Google API อื่นๆ ได้ เช่น คุณสามารถระบุ placeId ที่ Roads API ส่งคืนเพื่อรับที่อยู่ของจุดที่สแนป ดูข้อมูลเพิ่มเติมเกี่ยวกับรหัสสถานที่ได้ที่ภาพรวมรหัสสถานที่
เมื่อระบุ placeId คำขอต้องไม่มีช่องต่อไปนี้
addresslatLnglocationcomponentRestrictions
ตัวอย่างต่อไปนี้ยอมรับรหัสสถานที่ ค้นหาที่อยู่ที่เกี่ยวข้อง และจัดกึ่งกลางแผนที่ที่ตำแหน่งนั้น นอกจากนี้ยังแสดงหน้าต่างข้อมูลที่แสดง ที่อยู่ที่จัดรูปแบบของสถานที่ที่เกี่ยวข้องด้วย
TypeScript
// Initialize the map. function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 8, center: { lat: 40.72, lng: -73.96 }, } ); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); (document.getElementById("submit") as HTMLElement).addEventListener( "click", () => { geocodePlaceId(geocoder, map, infowindow); } ); } // This function is called when the user clicks the UI button requesting // a geocode of a place ID. function geocodePlaceId( geocoder: google.maps.Geocoder, map: google.maps.Map, infowindow: google.maps.InfoWindow ) { const placeId = (document.getElementById("place-id") as HTMLInputElement) .value; geocoder .geocode({ placeId: placeId }) .then(({ results }) => { if (results[0]) { map.setZoom(11); map.setCenter(results[0].geometry.location); const marker = new google.maps.Marker({ map, position: results[0].geometry.location, }); infowindow.setContent(results[0].formatted_address); infowindow.open(map, marker); } else { window.alert("No results found"); } }) .catch((e) => window.alert("Geocoder failed due to: " + e)); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
// Initialize the map. function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 8, center: { lat: 40.72, lng: -73.96 }, }); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); document.getElementById("submit").addEventListener("click", () => { geocodePlaceId(geocoder, map, infowindow); }); } // This function is called when the user clicks the UI button requesting // a geocode of a place ID. function geocodePlaceId(geocoder, map, infowindow) { const placeId = document.getElementById("place-id").value; geocoder .geocode({ placeId: placeId }) .then(({ results }) => { if (results[0]) { map.setZoom(11); map.setCenter(results[0].geometry.location); const marker = new google.maps.Marker({ map, position: results[0].geometry.location, }); infowindow.setContent(results[0].formatted_address); infowindow.open(map, marker); } else { window.alert("No results found"); } }) .catch((e) => window.alert("Geocoder failed due to: " + e)); } window.initMap = initMap;