ภาพรวม
การแปลงพิกัดภูมิศาสตร์คือกระบวนการแปลงที่อยู่ (เช่น "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
- คลิกปุ่มเลือกโปรเจ็กต์ จากนั้นเลือกโปรเจ็กต์เดียวกันกับที่คุณตั้งค่า สำหรับ Maps JavaScript API แล้วคลิกเปิด
- จากรายการ API ในแดชบอร์ด ให้มองหา Geocoding API
- หากเห็น 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 ที่มี
ข้อความค้นหาและเมธอด Callback เพื่อดำเนินการเมื่อได้รับคำตอบ
ออบเจ็กต์ลิเทอรัล GeocoderRequest มีช่องต่อไปนี้
{ address: string, location: LatLng, placeId: string, bounds: LatLngBounds, componentRestrictions: GeocoderComponentRestrictions, region: string }
พารามิเตอร์ที่ต้องระบุ: คุณต้องระบุฟิลด์ต่อไปนี้ 1 ฟิลด์เท่านั้น
address— ที่อยู่ที่ต้องการเข้ารหัสพิกัดภูมิศาสตร์
หรือ
location-LatLng(หรือLatLngLiteral) ที่คุณต้องการรับที่อยู่ที่ใกล้ที่สุด ซึ่งมนุษย์อ่านได้ โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์จะทำการเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ ดูข้อมูลเพิ่มเติมได้ที่ การแปลงพิกัดทางภูมิศาสตร์ย้อนกลับ
หรือ
placeId— รหัสสถานที่ของสถานที่ที่คุณต้องการ รับที่อยู่ที่ใกล้ที่สุดซึ่งมนุษย์อ่านได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับ การดึงข้อมูลที่อยู่สำหรับรหัสสถานที่
พารามิเตอร์ที่ไม่บังคับ:
bounds— TheLatLngBoundsซึ่งจะใช้เพื่อให้น้ำหนักผลลัพธ์รหัสพิกัดภูมิศาสตร์มากขึ้น พารามิเตอร์boundsจะส่งผลต่อผลลัพธ์จาก Geocoder เท่านั้น แต่จะไม่จำกัดผลลัพธ์โดยสมบูรณ์ ดูข้อมูลเพิ่มเติมเกี่ยวกับ การปรับ Viewport ด้านล่างcomponentRestrictions— ใช้เพื่อจำกัดผลการค้นหาให้แสดงเฉพาะพื้นที่ที่กำหนด ดูข้อมูลเพิ่มเติมเกี่ยวกับ การกรองคอมโพเนนต์ด้านล่างregion- รหัสภูมิภาคที่ระบุเป็นรหัสภูมิภาค Unicode 2 อักขระ (ไม่ใช่ตัวเลข) ในกรณีส่วนใหญ่ แท็กเหล่านี้จะแมปกับค่า 2 อักขระของ ccTLD ("โดเมนระดับบนสุด") ที่คุ้นเคยโดยตรง พารามิเตอร์regionจะส่งผลต่อผลลัพธ์จาก Geocoder เท่านั้น แต่จะไม่จำกัดผลลัพธ์โดยสมบูรณ์ ดูข้อมูลเพิ่มเติมเกี่ยวกับ การปรับรหัสภูมิภาคด้านล่างextraComputations— ค่าที่อนุญาตสำหรับพารามิเตอร์นี้คือADDRESS_DESCRIPTORSเท่านั้น ดูรายละเอียดเพิ่มเติมได้ที่ ตัวอธิบายที่อยู่fulfillOnZeroResults— ทำตามสัญญาในสถานะ ZERO_RESULT ใน การตอบกลับ คุณอาจต้องการใช้พารามิเตอร์นี้เนื่องจากแม้จะไม่มีผลลัพธ์การเข้ารหัสพิกัดภูมิศาสตร์ แต่ระบบอาจยังแสดง ฟิลด์ระดับการตอบกลับเพิ่มเติม ดูรายละเอียดเพิ่มเติมได้ที่ ดำเนินการเมื่อไม่มีผลลัพธ์
การตอบกลับการเข้ารหัสพิกัดภูมิศาสตร์
บริการเข้ารหัสพิกัดภูมิศาสตร์ต้องมีเมธอด 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[]คืออาร์เรย์ที่ระบุประเภทของ คอมโพเนนต์ที่อยู่ คอมโพเนนต์ที่อยู่อาจมีอาร์เรย์ประเภทว่าง เมื่อไม่มีประเภทที่รู้จักสำหรับคอมโพเนนต์ที่อยู่นั้น API อาจเพิ่มค่าประเภทใหม่ตามความจำเป็น ดูข้อมูลเพิ่มเติมได้ที่ ประเภทที่อยู่และประเภทคอมโพเนนต์ของที่อยู่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); }); };
ดำเนินการเมื่อไม่มีผลการค้นหา
สำหรับการเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ โดยค่าเริ่มต้น ระบบจะทำลายสัญญาใน status=ZERO_RESULTS อย่างไรก็ตาม
ในกรณีนี้ ระบบอาจยังคงป้อนข้อมูลในช่องระดับการตอบกลับเพิ่มเติมของ plus_code และ address_descriptor
หากระบุค่าเป็น "จริง" สำหรับพารามิเตอร์ fulfillOnZeroResults
ระบบจะป้อนข้อมูลในกรณีนี้ หากระบุค่าเป็นจริงสำหรับพารามิเตอร์ fulfillOnZeroResults สัญญาจะไม่ถูกละเมิด และจะเข้าถึงช่องเพิ่มเติมเหล่านี้ได้จากสัญญาหากมี
ตัวอย่างลักษณะการทำงานนี้สำหรับละติจูด/ลองจิจูดในทวีปแอนตาร์กติกามีดังนี้
แม้จะไม่มีผลลัพธ์การเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ แต่เราก็ยังพิมพ์ Plus Code
ใน Promise ได้หากตั้งค่า 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" : { "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();
CSS
/* * Always set the map height explicitly to define the size of the div element * that contains the map. */ gmp-map { height: 100%; } /* * Optional: Makes the sample page fill the window. */ html, body { height: 100%; margin: 0; padding: 0; font-family: Roboto, sans-serif; } #floating-panel { background-color: #fff; border-radius: 5px; box-shadow: rgba(0, 0, 0, 0.35) 0px 5px 15px; margin: 10px; padding: 10px; font-family: Roboto, sans-serif; font-size: 1rem; } #latlng { width: 100%; font-family: Roboto, sans-serif; font-size: 1rem; margin-bottom: 4px; } #submit { font-size: 1rem; }
HTML
<html>
<head>
<title>Reverse Geocoding</title>
<link rel="stylesheet" type="text/css" href="./style.css" />
<script type="module" src="./index.js"></script>
<!-- prettier-ignore -->
<script>(g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})
({key: "AIzaSyA6myHzS10YXdcazAFalmXvDkrYCp5cLc8", v: "weekly" });</script>
</head>
<body>
<gmp-map center="0.714224, -73.961452" zoom="8" map-id="DEMO_MAP_ID">
<div id="floating-panel" slot="control-block-start-inline-start">
<p>
Click the map to reverse geocode, or add your own
coordinates.
</p>
<input
id="latlng"
type="text"
value="40.714224, -73.961452" /><br />
<input id="submit" type="button" value="Reverse Geocode" />
</div>
</gmp-map>
</body>
</html>ลองใช้ตัวอย่าง
โปรดทราบว่าในตัวอย่างก่อนหน้า เราแสดงผลลัพธ์แรกโดย
เลือก 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. async function initMap(): Promise<void> { await Promise.all([ google.maps.importLibrary("maps"), google.maps.importLibrary("geocoding"), google.maps.importLibrary("marker"), ]); const mapElement = document.querySelector("gmp-map") as google.maps.MapElement; const innerMap = mapElement.innerMap; const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); (document.getElementById("submit") as HTMLElement).addEventListener( "click", () => { geocodePlaceId(geocoder, innerMap, infowindow); } ); } // This function is called when the user clicks the UI button. 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.AdvancedMarkerElement({ 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)); } initMap();
JavaScript
// Initialize the map. async function initMap() { await Promise.all([ google.maps.importLibrary("maps"), google.maps.importLibrary("geocoding"), google.maps.importLibrary("marker"), ]); const mapElement = document.querySelector("gmp-map"); const innerMap = mapElement.innerMap; const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); document.getElementById("submit").addEventListener("click", () => { geocodePlaceId(geocoder, innerMap, infowindow); }); } // This function is called when the user clicks the UI button. 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.AdvancedMarkerElement({ 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)); } initMap();