ภาพรวม
การแปลงพิกัดภูมิศาสตร์คือกระบวนการแปลงที่อยู่ (เช่น "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 API
คำขอการระบุพิกัดทางภูมิศาสตร์
การเข้าถึงบริการการแปลงที่อยู่เป็นพิกัดภูมิศาสตร์เป็นแบบไม่พร้อมกัน เนื่องจาก 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 ใน การตอบกลับ ซึ่งอาจเป็นสิ่งที่ต้องการ เนื่องจากแม้จะไม่มีผลการจับคู่พิกัดภูมิศาสตร์เลย แต่ระบบอาจยังคงแสดงผลช่องระดับคำตอบเพิ่มเติม ดูรายละเอียดเพิ่มเติมใน ดำเนินการตามผลลัพธ์ที่ไม่มีผลลัพธ์
การตอบกลับการเข้ารหัสพิกัดภูมิศาสตร์
บริการการแปลงที่อยู่เป็นพิกัดภูมิศาสตร์ต้องใช้เมธอดการเรียกกลับเพื่อดำเนินการเมื่อดึงข้อมูลผลลัพธ์ของตัวแปลงที่อยู่เป็นพิกัดภูมิศาสตร์ การเรียกกลับนี้ควรส่งพารามิเตอร์ 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
เป็น "Alaska" และ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
บ่งชี้ถึงหน่วยงานพลเรือนที่มีการสั่งซื้อครั้งแรกซึ่งต่ำกว่าระดับประเทศ ส่วนในสหรัฐอเมริกา ระดับการดูแลระบบเหล่านี้คือรัฐ ระดับการปกครองเหล่านี้ไม่ได้มีในทุกประเทศ ในกรณีส่วนใหญ่ ชื่อย่อของ 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
หมายถึงนิติบุคคลภาครัฐระดับล่างสุดที่อยู่ภายใต้เขตท้องที่ สำหรับบางสถานที่อาจได้รับป้ายประเภทเพิ่มเติมประเภทใดประเภทหนึ่งต่อไปนี้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
คุณส่งคำขอการแปลงที่อยู่เป็นพิกัดภูมิศาสตร์สำหรับทุกโดเมนที่แอปพลิเคชัน 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
ค่าตัวกรองรองรับวิธีการแก้ไขการสะกดและการจับคู่บางส่วนแบบเดียวกับคำขอการแปลงพิกัดภูมิศาสตร์อื่นๆ
ตัวระบุพิกัดภูมิศาสตร์จะแสดงเฉพาะผลลัพธ์ที่ตรงกับตัวกรองทั้งหมดของคอมโพเนนต์ กล่าวคือ ระบบจะประเมินข้อกำหนดของตัวกรองเป็น "และ" ไม่ใช่ "หรือ"
ตัวกรองคอมโพเนนต์ประกอบด้วยรายการต่อไปนี้อย่างน้อย 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); } }); }
ดำเนินการตามคำสั่งซื้อเมื่อผลลัพธ์เป็น 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
มีดังนี้
{ "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;