ภาพรวม
การเข้ารหัสพิกัดภูมิศาสตร์เป็นกระบวนการแปลงที่อยู่ (เช่น "1600 Amphitheatre Parkway, Mountain View, CA") ให้เป็นพิกัดทางภูมิศาสตร์ (เช่น ละติจูด 37.423021 และลองจิจูด -122.083739) ซึ่งคุณสามารถใช้เพื่อวางเครื่องหมายหรือวางตำแหน่งแผนที่ได้
การเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับเป็นกระบวนการในการแปลงพิกัดทางภูมิศาสตร์เป็นที่อยู่ที่มนุษย์อ่านได้ (ดูการระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับ (การค้นหาที่อยู่))
นอกจากนี้ คุณยังสามารถใช้โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์เพื่อค้นหาที่อยู่สำหรับรหัสสถานที่ที่ระบุได้
Maps JavaScript API มีคลาส Geocoder สำหรับการระบุพิกัดทางภูมิศาสตร์และกลับพิกัดทางภูมิศาสตร์จากข้อมูลของผู้ใช้แบบไดนามิก แต่หากคุณต้องการพิกัดภูมิศาสตร์แบบคงที่ของที่อยู่ที่รู้จัก โปรดดูบริการเว็บการเข้ารหัสพิกัดภูมิศาสตร์
เริ่มต้นใช้งาน
ก่อนใช้บริการ Geocoding ใน Maps JavaScript API ก่อนอื่นให้ตรวจสอบว่าคุณได้เปิดใช้ Geocoding API ใน Google Cloud Console ในโปรเจ็กต์เดียวกับที่คุณตั้งค่าสำหรับ Maps JavaScript API
วิธีดูรายการ API ที่เปิดใช้มีดังนี้
- ไปที่ คอนโซล Google Cloud
- คลิกปุ่มเลือกโปรเจ็กต์ จากนั้นเลือกโปรเจ็กต์เดียวกันกับที่ตั้งค่าไว้สำหรับ Maps JavaScript API แล้วคลิกเปิด
- จากรายการ API ในหน้าแดชบอร์ด ให้มองหา Geocoding API
- หากเห็น API ในรายการ แสดงว่าทุกอย่างเรียบร้อยแล้ว หากไม่มี API อยู่ในรายการ ให้เปิดใช้โดยทำดังนี้
- ที่ด้านบนของหน้า ให้เลือกเปิดใช้ API เพื่อแสดงแท็บคลัง หรือเลือกคลังจากเมนูด้านซ้าย
- ค้นหา Geocoding API แล้วเลือกจากรายการผลลัพธ์
- เลือกเปิดใช้ เมื่อกระบวนการเสร็จสิ้นแล้ว Geocoding API จะปรากฏในรายการ API ในแดชบอร์ด
ราคาและนโยบาย
ราคา
ตั้งแต่วันที่ 16 กรกฎาคม 2018 แพ็กเกจราคาแบบจ่ายเมื่อใช้แบบใหม่มีผลกับ Maps, Routes และ Places หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับการกำหนดราคาและขีดจำกัดการใช้งานใหม่สำหรับการใช้บริการ Geocoding ของ JavaScript โปรดดูการใช้งานและการเรียกเก็บเงินสำหรับ Geocoding API
นโยบาย
การใช้บริการ Geocoding ต้องเป็นไปตามนโยบายที่อธิบายสำหรับ Geocoding API
คำขอเกี่ยวกับการระบุพิกัดทางภูมิศาสตร์
การเข้าถึงบริการ Geocoding เป็นแบบไม่พร้อมกัน เนื่องจาก Google Maps API จำเป็นต้องเรียกใช้ไปยังเซิร์ฟเวอร์ภายนอก ด้วยเหตุนี้ คุณจึงต้องส่งเมธอด callback เพื่อดำเนินการเมื่อคำขอเสร็จสมบูรณ์ วิธี Callback นี้จะประมวลผลผลลัพธ์ โปรดทราบว่าโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์อาจแสดงผลลัพธ์มากกว่า 1 รายการ
คุณเข้าถึงบริการการระบุพิกัดทางภูมิศาสตร์ของ 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
—LatLngBounds
ภายในส่วนที่ให้น้ำหนักพิกัดทางภูมิศาสตร์ให้ผลลัพธ์ที่ชัดเจนกว่า พารามิเตอร์bounds
จะมีผลต่อผลลัพธ์ของโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์เท่านั้น (ไม่จำกัดทั้งหมด) ดูข้อมูลเพิ่มเติมเกี่ยวกับการให้น้ำหนักวิวพอร์ต ที่ด้านล่างcomponentRestrictions
— ใช้เพื่อจำกัดผลการค้นหาในพื้นที่ที่เจาะจง ดูข้อมูลเพิ่มเติมเกี่ยวกับการกรองคอมโพเนนต์ด้านล่างregion
— รหัสภูมิภาคที่ระบุเป็น แท็กย่อยสำหรับภูมิภาค Unicode ที่มีอักขระ 2 ตัว (ไม่ใช่ตัวเลข) ในกรณีส่วนใหญ่ แท็กเหล่านี้จะแมปกับค่าแบบ 2 อักขระ ccTLD ("โดเมนระดับบนสุด") ที่คุ้นเคยโดยตรง พารามิเตอร์region
จะมีผลต่อผลการค้นหาจากโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์เท่านั้น (ไม่จำกัดทั้งหมด) ดูข้อมูลเพิ่มเติมเกี่ยวกับการให้น้ำหนักรหัสภูมิภาคด้านล่างextraComputations
— ค่าที่อนุญาตเพียงค่าเดียวสำหรับพารามิเตอร์นี้คือADDRESS_DESCRIPTORS
ดูรายละเอียดเพิ่มเติมใน ข้อบ่งชี้ที่อยู่fulfillOnZeroResults
— ปฏิบัติตามคำสัญญาโดยมีสถานะเป็น ZERO_RESULT ใน การตอบกลับ การดำเนินการนี้อาจมีประโยชน์เนื่องจากแม้จะไม่มีผลลัพธ์การเข้ารหัสพิกัดภูมิศาสตร์ แต่ก็ยังมีฟิลด์ระดับการตอบกลับเพิ่มเติมแสดงอยู่ ดูรายละเอียดเพิ่มเติมใน ดำเนินการตามผลลัพธ์ที่ไม่มีผลลัพธ์
การตอบกลับการเข้ารหัสพิกัดภูมิศาสตร์
บริการการระบุพิกัดทางภูมิศาสตร์จำเป็นต้องใช้เมธอด Callback เพื่อดำเนินการเมื่อดึงผลลัพธ์ของโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์ 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 รายการที่ระบุประเภทของฟีเจอร์ที่แสดงในผลลัพธ์ ตัวอย่างเช่น รหัสพิกัดภูมิศาสตร์ของ "ชิคาโก" จะแสดงผล "ย่าน" ซึ่งระบุว่า "ชิคาโก" เป็นเมือง และยังแสดงผล "การเมือง" ที่บ่งชี้ว่าเป็นหน่วยงานทางการเมือง ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทที่อยู่และประเภทองค์ประกอบที่อยู่ได้ที่ด้านล่าง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
เป็น "อะแลสกา" และshort_name
เป็น "AK" โดยใช้อักษรย่อรหัสไปรษณีย์ 2 ตัว
โปรดดูข้อเท็จจริงต่อไปนี้เกี่ยวกับอาร์เรย์
address_components[]
- อาร์เรย์ขององค์ประกอบที่อยู่อาจมีคอมโพเนนต์มากกว่า
formatted_address
- อาร์เรย์ไม่จำเป็นต้องรวมเอนทิตีทางการเมืองทั้งหมดที่มีที่อยู่ นอกเหนือจากที่อยู่ใน
formatted_address
หากต้องการดึงข้อมูลหน่วยงานทางการเมืองทั้งหมดที่มีที่อยู่หนึ่งๆ คุณควรใช้การเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ โดยส่งผ่านละติจูด/ลองจิจูดของที่อยู่เป็นพารามิเตอร์ไปยังคำขอ - เราไม่รับประกันว่ารูปแบบของการตอบกลับคำขอจะเหมือนกัน กล่าวอย่างเจาะจงคือ จำนวนของ
address_components
จะแตกต่างกันไปตามที่อยู่ที่ขอ และอาจเปลี่ยนแปลงเมื่อเวลาผ่านไปสำหรับที่อยู่เดียวกัน คอมโพเนนต์เปลี่ยนตำแหน่งในอาร์เรย์ได้ ประเภทของคอมโพเนนต์เปลี่ยนแปลงได้ คอมโพเนนต์บางอย่างอาจขาดหายไปในคำตอบในภายหลัง
ดูข้อมูลเพิ่มเติมเกี่ยวกับประเภทที่อยู่และประเภทองค์ประกอบที่อยู่ได้ที่ด้านล่าง
-
partial_match
ระบุว่าโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์ไม่ได้ส่งคืนผลลัพธ์ที่ตรงกันทั้งหมดของคำขอเดิม แม้ว่าจะสามารถจับคู่บางส่วนของที่อยู่ที่ขอได้ คุณอาจต้องการตรวจสอบคำขอเดิมที่มีการสะกดผิดและ/หรือที่อยู่ไม่สมบูรณ์การจับคู่บางส่วนมักเกิดขึ้นสำหรับที่อยู่ที่ไม่มีอยู่ภายในย่านที่คุณส่งในคำขอ รายการที่ตรงกันบางส่วนอาจแสดงผลเมื่อคำขอตรงกับสถานที่ตั้ง 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
บ่งชี้ถึงหน่วยงานทางการเมืองระดับชาติ และโดยทั่วไปจะเป็นประเภทลำดับสูงสุดที่ส่งกลับโดย Geocoderadministrative_area_level_1
บ่งชี้ถึงหน่วยงานพลเรือนที่มีการสั่งซื้อครั้งแรกซึ่งต่ำกว่าระดับประเทศ ส่วนในสหรัฐอเมริกา ระดับการดูแลระบบเหล่านี้คือรัฐ บางประเทศไม่ได้แสดงระดับการปกครองเหล่านี้ ในกรณีส่วนใหญ่ ชื่อย่อ admin_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.codespostal_code
หมายถึงรหัสไปรษณีย์ที่ใช้ระบุที่อยู่ทางไปรษณีย์ภายในประเทศnatural_feature
หมายถึงองค์ประกอบทางธรรมชาติที่โดดเด่นairport
หมายถึงสนามบินpark
หมายถึงสวนสาธารณะที่มีชื่อpoint_of_interest
หมายถึงจุดสนใจที่มีชื่อ โดยปกติแล้ว "จุดที่น่าสนใจ" เหล่านี้คือหน่วยงานท้องถิ่นที่โดดเด่นซึ่งไม่เหมาะกับหมวดหมู่อื่น เช่น "ตึกเอ็มไพร์สเตท" หรือ "หอไอเฟล"
รายการประเภทที่ว่างเปล่าหมายความว่าไม่มีประเภทที่รู้จักสำหรับคอมโพเนนต์ที่อยู่หนึ่งๆ เช่น 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
ที่ไม่มีอยู่จริง"OVER_QUERY_LIMIT"
แสดงว่าคุณใช้เกินโควต้าแล้ว"REQUEST_DENIED"
บ่งบอกว่าคำขอของคุณถูกปฏิเสธ หน้าเว็บนี้ไม่ได้รับอนุญาตให้ใช้โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์- โดยทั่วไปแล้ว
"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
เพื่อกําหนดขอบเขตของวิวพอร์ตนี้ โปรดทราบว่าการให้น้ำหนักจะต้องการผลลัพธ์ภายในขอบเขตเท่านั้น หากมีผลลัพธ์ที่เกี่ยวข้องมากกว่าอยู่นอกขอบเขตเหล่านี้ ก็อาจรวมผลลัพธ์นั้นไว้ด้วย
ตัวอย่างเช่น รหัสพิกัดภูมิศาสตร์ของ "Winnetka" มักจะแสดงเขตชานเมืองของชิคาโกดังนี้
{ "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
ที่เป็นกรอบล้อมรอบสำหรับซานเฟอร์นันโดวัลเลย์ของลอสแอนเจลิสทำให้รหัสพิกัดภูมิศาสตร์นี้ส่งคืนพื้นที่ใกล้เคียงที่ชื่อ "Winnetka" ในตำแหน่งนั้น
{ "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" สำหรับ "บริเตนใหญ่")
เมื่อใช้พารามิเตอร์ region
ให้ทำดังนี้
- ระบุเพียงประเทศหรือภูมิภาคเดียว ระบบจะไม่สนใจค่าหลายค่าและอาจส่งผลให้คำขอล้มเหลว
- ใช้แท็กย่อยภูมิภาคที่มี 2 อักขระเท่านั้น (รูปแบบ Unicode CLDR) อินพุตอื่นๆ ทั้งหมดจะเกิดข้อผิดพลาด
- รองรับเฉพาะประเทศและภูมิภาคที่ระบุไว้ในรายละเอียดความครอบคลุมของ Google Maps Platform เท่านั้น
คุณสามารถส่งคำขอเกี่ยวกับการระบุพิกัดทางภูมิศาสตร์สำหรับทุกโดเมนที่แอปพลิเคชัน Google Maps หลักนำเสนอการระบุพิกัดทางภูมิศาสตร์ โปรดทราบว่าการให้น้ำหนัก จะต้องการผลลัพธ์สำหรับโดเมนที่ระบุเท่านั้น และอาจรวมผลลัพธ์ที่เกี่ยวข้องมากกว่าไว้ภายนอกโดเมนนี้
ตัวอย่างเช่น รหัสพิกัดภูมิศาสตร์ของ "Toledo" จะแสดงผลผลลัพธ์นี้เนื่องจากโดเมนเริ่มต้นสำหรับบริการ Geocoding เป็นสหรัฐอเมริกา
{ "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
ค่าตัวกรองรองรับวิธีการแก้ไขตัวสะกดและการจับคู่บางส่วนเหมือนกับคำขอการระบุพิกัดทางภูมิศาสตร์อื่นๆ
โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์จะแสดงเฉพาะผลลัพธ์ที่ตรงกับตัวกรองคอมโพเนนต์ทั้งหมด กล่าวคือ ระบบจะประเมินข้อกำหนดของตัวกรองเป็น "และ" ไม่ใช่ "หรือ"
ตัวกรองคอมโพเนนต์ประกอบด้วยรายการต่อไปนี้อย่างน้อย 1 รายการ
route
ตรงกับชื่อยาวหรือสั้นของเส้นทางlocality
จะจับคู่กับประเภทย่านและย่านย่อยadministrativeArea
ตรงกับเขตบริหารทุกระดับpostalCode
ตรงกับรหัสไปรษณีย์และคำนำหน้ารหัสไปรษณีย์country
ตรงกับชื่อประเทศหรือรหัสประเทศแบบ ISO 3166-1 2 ตัวอักษร หมายเหตุ: 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); } }); }
ดำเนินการตามคำสั่งซื้อเมื่อผลลัพธ์เป็น 0 รายการ
สำหรับการระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับ โดยค่าเริ่มต้นแล้วสัญญาจะเสียหายในวันที่ status=ZERO_RESULTS
แต่ในกรณีนี้ ระบบอาจยังเติมข้อมูลในช่องระดับคำตอบเพิ่มเติมของ plus_code
และ address_descriptor
หากระบุเป็น "จริง" สำหรับพารามิเตอร์ 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({ '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
และtext
straight_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
และtext
containment
คือความสัมพันธ์ของการควบคุมกั้นโดยประมาณระหว่างพิกัดอินพุตกับผลลัพธ์พื้นที่:"NEAR"
คือความสัมพันธ์เริ่มต้นเมื่อไม่ตรงกับเงื่อนไขต่อไปนี้"WITHIN"
เมื่อพิกัดอินพุตอยู่ใกล้กับศูนย์กลางของพื้นที่"OUTSKIRTS"
เมื่อพิกัดอินพุตอยู่ใกล้กับขอบของพื้นที่
ความครอบคลุมของตัวบอกที่อยู่
ฟีเจอร์นี้มีให้บริการในบางประเทศเท่านั้น
นี่เป็นฟีเจอร์เวอร์ชันตัวอย่างและเรายินดีรับฟังความคิดเห็น โปรดส่งอีเมลถึงเราที่ address-descriptors-feedback@google.com
การเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ (การค้นหาที่อยู่)
โดยทั่วไปแล้ว คำว่าการเข้ารหัสพิกัดภูมิศาสตร์หมายถึงการแปลที่อยู่ที่มนุษย์อ่านได้เป็นตำแหน่งในแผนที่ กระบวนการแปลงข้อมูลสถานที่บนแผนที่เป็นที่อยู่ที่มนุษย์อ่านได้เรียกว่าการเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ
ป้อนคู่ละติจูด/ลองจิจูดที่คั่นด้วยคอมมาในพารามิเตอร์ location
แทนการระบุ address
แบบข้อความ
ตัวอย่างต่อไปนี้จะกำหนดพิกัดทางภูมิศาสตร์สำหรับค่าละติจูด/ลองจิจูดและตั้งศูนย์กลางของแผนที่ที่ตำแหน่งนั้น เพื่อแสดงหน้าต่างข้อมูลที่มีที่อยู่ซึ่งจัดรูปแบบดังกล่าว
TypeScript
function initMap(): void { const map = new google.maps.Map( document.getElementById("map") as HTMLElement, { zoom: 8, center: { lat: 40.731, lng: -73.997 }, } ); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); (document.getElementById("submit") as HTMLElement).addEventListener( "click", () => { geocodeLatLng(geocoder, map, infowindow); } ); } 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]) { map.setZoom(11); const marker = new google.maps.Marker({ position: latlng, map: map, }); 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)); } declare global { interface Window { initMap: () => void; } } window.initMap = initMap;
JavaScript
function initMap() { const map = new google.maps.Map(document.getElementById("map"), { zoom: 8, center: { lat: 40.731, lng: -73.997 }, }); const geocoder = new google.maps.Geocoder(); const infowindow = new google.maps.InfoWindow(); document.getElementById("submit").addEventListener("click", () => { geocodeLatLng(geocoder, map, infowindow); }); } 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]) { map.setZoom(11); const marker = new google.maps.Marker({ position: latlng, map: map, }); 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)); } window.initMap = initMap;
ลองใช้ตัวอย่าง
โปรดทราบว่าในตัวอย่างก่อนหน้านี้ เราแสดงผลการค้นหาแรกด้วยการเลือก results[0]
โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับมักแสดงผลลัพธ์มากกว่า 1 รายการ ที่อยู่ที่ใช้รหัสพิกัดภูมิศาสตร์ไม่ได้มีเพียงที่อยู่ไปรษณีย์เท่านั้น แต่ยังรวมถึงวิธีการตั้งชื่อตำแหน่งทางภูมิศาสตร์ด้วยวิธีใดๆ อีกด้วย ตัวอย่างเช่น เมื่อระบุพิกัดทางภูมิศาสตร์ของจุดในเมืองชิคาโก จุดที่เข้ารหัสพิกัดภูมิศาสตร์อาจติดป้ายกำกับว่าเป็นที่อยู่ เช่น เมือง (ชิคาโก) เป็นรัฐ (อิลลินอยส์) หรือประเทศ (สหรัฐอเมริกา) ทั้งหมดเป็นที่อยู่ของโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์ โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับจะส่งกลับผลลัพธ์เหล่านี้ทั้งหมด
โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับจะจับคู่เอนทิตีทางการเมือง (ประเทศ จังหวัด เมือง และย่าน) ที่อยู่ และรหัสไปรษณีย์
ตัวอย่างรายการที่อยู่ที่การค้นหาข้างต้นอาจแสดงมีดังนี้
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
คำขอจะมีช่องต่อไปนี้ไม่ได้
address
latLng
location
componentRestrictions
ตัวอย่างต่อไปนี้ยอมรับรหัสสถานที่ ค้นหาที่อยู่ที่เกี่ยวข้อง และตั้งศูนย์กลางของแผนที่ไว้ที่ตำแหน่งนั้น นอกจากนี้ยังจะแสดงหน้าต่างข้อมูลที่แสดงที่อยู่ซึ่งจัดรูปแบบของสถานที่ที่เกี่ยวข้อง ดังนี้
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;