ภาพรวม
การแปลงพิกัดภูมิศาสตร์คือกระบวนการแปลงที่อยู่ (เช่น "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
คำขอเข้ารหัสพิกัดภูมิศาสตร์
การเข้าถึงบริการการเข้ารหัสพิกัดภูมิศาสตร์เป็นแบบไม่พร้อมกัน เนื่องจาก Google Maps API ต้องทำการเรียกไปยังเซิร์ฟเวอร์ภายนอก ด้วยเหตุนี้ คุณจึงต้องส่งเมธอด callback เพื่อดำเนินการเมื่อคำขอเสร็จสมบูรณ์ เมธอด Callback นี้จะประมวลผลผลลัพธ์ โปรดทราบว่า Geocoder อาจแสดงผลลัพธ์มากกว่า 1 รายการ
คุณเข้าถึงบริการเข้ารหัสพิกัดภูมิศาสตร์ของ 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 โดย Callback นี้ควรส่งพารามิเตอร์ 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 คำขออาจสำเร็จหากคุณ ลองอีกครั้ง
ในตัวอย่างนี้ เราจะเข้ารหัสที่อยู่ทางภูมิศาสตร์และวางเครื่องหมายที่ค่าละติจูดและลองจิจูดที่แสดงผล โปรดทราบว่าระบบจะส่งตัวแฮนเดิลเป็น ลิเทอรัลฟังก์ชันที่ไม่ระบุชื่อ
var geocoder; var map; function initialize() { geocoder = new google.maps.Geocoder(); var latlng = new google.maps.LatLng(-34.397, 150.644); var mapOptions = { zoom: 8, center: latlng } map = new google.maps.Map(document.getElementById('map'), mapOptions); } function codeAddress() { var address = document.getElementById('address').value; geocoder.geocode( { 'address': address}, function(results, status) { if (status == 'OK') { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } else { alert('Geocode was not successful for the following reason: ' + status); } }); } <body onload="initialize()"> <div id="map" style="width: 320px; height: 480px;"></div> <div> <input id="address" type="textbox" value="Sydney, NSW"> <input type="button" value="Encode" onclick="codeAddress()"> </div> </body>
การปรับวิวพอร์ต
คุณสามารถสั่งให้บริการเข้ารหัสพิกัดภูมิศาสตร์แสดงผลลัพธ์ภายในวิวพอร์ตที่ระบุ (แสดงเป็นกรอบล้อมรอบ) โดยทำได้ด้วยการตั้งค่าพารามิเตอร์ 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
function codeAddress() { geocoder.geocode({ componentRestrictions: { country: 'AU', postalCode: '2000' } }, function(results, status) { if (status == 'OK') { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } else { window.alert('Geocode was not successful for the following reason: ' + status); } }); }
ดำเนินการเมื่อไม่มีผลการค้นหา
สำหรับการเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ โดยค่าเริ่มต้น ระบบจะหยุดการทำงานของ Promise ที่ status=ZERO_RESULTS อย่างไรก็ตาม
ในกรณีนี้ ระบบอาจยังคงป้อนข้อมูลในช่องระดับการตอบกลับเพิ่มเติมของ plus_code และ address_descriptor
หากระบุค่าเป็น "จริง" สำหรับพารามิเตอร์ fulfillOnZeroResults ระบบจะป้อนข้อมูลในกรณีนี้ หากระบุค่าเป็นจริงสำหรับพารามิเตอร์ fulfillOnZeroResults
สัญญาจะไม่ถูกละเมิด และจะเข้าถึงช่องเพิ่มเติมเหล่านี้ได้จากสัญญาหากมี
ตัวอย่างลักษณะการทำงานนี้สำหรับละติจูด/ลองจิจูดในทวีปแอนตาร์กติกามีดังนี้
แม้ว่าจะไม่มีผลลัพธ์การแปลงพิกัดทางภูมิศาสตร์ย้อนกลับ แต่เราก็ยังพิมพ์รหัส Plus
ในสัญญาได้หากตั้งค่า 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`); }); }
ตัวบอกลักษณะที่อยู่
ตัวอธิบายที่อยู่มีข้อมูลเพิ่มเติมที่ช่วยอธิบายสถานที่ โดยใช้จุดสังเกตและพื้นที่ ดูการสาธิตตัวอธิบายที่อยู่ เพื่อสำรวจฟีเจอร์นี้
คุณเปิดใช้ตัวอธิบายที่อยู่ได้โดยใช้พารามิเตอร์ 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 ที่มีอยู่
ความคิดเห็น
ฟีเจอร์นี้พร้อมให้บริการในทุกภูมิภาค โดยพร้อมให้บริการแก่ผู้ใช้ในอินเดียแล้ว และอยู่ในขั้นตอนการเปิดตัวเวอร์ชันทดลองก่อน GA สำหรับภูมิภาคอื่นๆ ทั้งหมด เรายินดีรับฟังความคิดเห็น
- หากมีปัญหาที่เกี่ยวข้องกับภูมิภาคอินเดียเท่านั้น โปรดติดต่อทีมสนับสนุน
- หากต้องการส่งความคิดเห็นเกี่ยวกับรุ่นทดลอง โปรดส่งอีเมลถึงเราที่ 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, }); // Create a marker for re-use. marker = new AdvancedMarkerElement({ map: innerMap, }); 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, }); // Create a marker for re-use. marker = new AdvancedMarkerElement({ map: innerMap, }); 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;