ภาพรวม
การแปลงพิกัดภูมิศาสตร์คือกระบวนการแปลงที่อยู่ (เช่น "1600 Amphitheatre Parkway, Mountain View, CA") เป็นพิกัดภูมิศาสตร์ (เช่น ละติจูด 37.423021 และลองจิจูด -122.083739) ซึ่งคุณใช้วางเครื่องหมายหรือกำหนดตำแหน่งแผนที่ได้
การเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับคือกระบวนการแปลงพิกัดทางภูมิศาสตร์เป็นที่อยู่ซึ่งมนุษย์อ่านออกได้ (ดูการเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ (การค้นหาที่อยู่))
นอกจากนี้ คุณยังใช้ตัวระบุพิกัดภูมิศาสตร์เพื่อค้นหาที่อยู่ของรหัสสถานที่ที่ระบุได้ด้วย
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 เพื่อแสดงแท็บคลัง หรือเลือกคลังจากเมนูด้านซ้าย
- ค้นหา Geocoding API แล้วเลือกจากรายการผลลัพธ์
- เลือกเปิดใช้ เมื่อกระบวนการเสร็จสมบูรณ์แล้ว Geocoding API จะปรากฏในรายการ API ในแดชบอร์ด
ราคาและนโยบาย
ราคา
ตั้งแต่วันที่ 16 กรกฎาคม 2018 เป็นต้นไป แพ็กเกจราคาแบบจ่ายตามการใช้งานใหม่มีผลบังคับใช้สำหรับ Maps, Routes และ Places ดูข้อมูลเพิ่มเติมเกี่ยวกับราคาใหม่และขีดจํากัดการใช้งานสําหรับบริการการแปลงที่อยู่เป็นพิกัดภูมิศาสตร์แบบ JavaScript ได้ที่การใช้งานและการเรียกเก็บเงินสําหรับ Geocoding API
นโยบาย
การใช้บริการการแปลงที่อยู่เป็นพิกัดภูมิศาสตร์ต้องเป็นไปตามนโยบายที่อธิบายไว้สำหรับ Geocoding API
คำขอการแปลงที่อยู่เป็นพิกัดภูมิศาสตร์
การเข้าถึงบริการการแปลงที่อยู่เป็นพิกัดภูมิศาสตร์เป็นแบบไม่พร้อมกัน เนื่องจาก Google Maps API ต้องเรียกใช้เซิร์ฟเวอร์ภายนอก คุณจึงต้องส่งผ่านเมธอด callback เพื่อดำเนินการเมื่อคําขอเสร็จสมบูรณ์ เมธอด Callback นี้จะประมวลผลผลลัพธ์ โปรดทราบว่าตัวแปลงพิกัดภูมิศาสตร์อาจแสดงผลลัพธ์มากกว่า 1 รายการ
คุณเข้าถึงบริการการแปลงพิกัดภูมิศาสตร์ของ Google Maps API ภายในโค้ดผ่านgoogle.maps.Geocoder
ออบเจ็กต์คอนสตรัคเตอร์ เมธอด Geocoder.geocode()
จะเริ่มต้นคําขอไปยังบริการการแปลงที่อยู่เป็นพิกัดภูมิศาสตร์ โดยส่งค่าลิเทอรัลออบเจ็กต์ GeocoderRequest
ที่มีคําที่ป้อนและเมธอดการเรียกกลับเพื่อเรียกใช้เมื่อได้รับการตอบกลับ
ออบเจ็กต์ลิเทอรัล GeocoderRequest
มีช่องต่อไปนี้
{ address: string, location: LatLng, placeId: string, bounds: LatLngBounds, componentRestrictions: GeocoderComponentRestrictions, region: string }
พารามิเตอร์ที่ต้องระบุ: คุณต้องระบุฟิลด์ต่อไปนี้เพียง 1 ฟิลด์เท่านั้น
address
— ที่อยู่ที่ต้องการเข้ารหัสพิกัดภูมิศาสตร์
หรือ
location
—LatLng
(หรือLatLngLiteral
) ที่ต้องการรับที่อยู่ใกล้เคียงที่สุดที่มนุษย์อ่านได้ โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์จะเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ ดูข้อมูลเพิ่มเติมที่การแปลงพิกัดภูมิศาสตร์ย้อนกลับ
หรือ
placeId
— รหัสสถานที่ของสถานที่ที่คุณต้องการรับที่อยู่แบบอ่านง่ายซึ่งใกล้ที่สุด ดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียกข้อมูลที่อยู่สำหรับรหัสสถานที่
พารามิเตอร์ที่ไม่บังคับ:
bounds
— ขอบเขตLatLngBounds
ที่จะให้ผลการค้นหาพิกัดภูมิศาสตร์โดดเด่นมากขึ้น พารามิเตอร์bounds
จะส่งผลต่อผลลัพธ์จากโปรแกรมเปลี่ยนที่อยู่เป็นพิกัดภูมิศาสตร์เท่านั้น แต่จะไม่ได้จํากัดผลลัพธ์อย่างเต็มรูปแบบ ดูข้อมูลเพิ่มเติมเกี่ยวกับการถ่วงน้ำหนัก Viewport ได้ที่ด้านล่างcomponentRestrictions
— ใช้เพื่อจำกัดผลการค้นหาให้แสดงเฉพาะพื้นที่หนึ่งๆ ดูข้อมูลเพิ่มเติมเกี่ยวกับการกรองคอมโพเนนต์ด้านล่างregion
— รหัสภูมิภาคที่ระบุเป็นแท็กย่อยภูมิภาค Unicode 2 อักขระ (ไม่ใช่ตัวเลข) ในกรณีส่วนใหญ่ แท็กเหล่านี้จะจับคู่กับค่า 2 อักขระของ ccTLD ("โดเมนระดับบนสุด") ที่คุ้นเคยโดยตรง พารามิเตอร์region
จะส่งผลต่อผลลัพธ์จากโปรแกรมเปลี่ยนที่อยู่เป็นพิกัดภูมิศาสตร์เท่านั้น แต่จะไม่ได้จํากัดผลลัพธ์อย่างเต็มรูปแบบ ดูข้อมูลเพิ่มเติมเกี่ยวกับการถ่วงน้ำหนักรหัสภูมิภาคได้ที่ด้านล่างextraComputations
— ค่าเดียวที่อนุญาตสำหรับพารามิเตอร์นี้คือADDRESS_DESCRIPTORS
ดูรายละเอียดเพิ่มเติมได้ใน ตัวระบุที่อยู่fulfillOnZeroResults
— ปฏิบัติตามสัญญาในสถานะ ZERO_RESULT ในการตอบกลับ ซึ่งอาจเป็นสิ่งที่ต้องการ เนื่องจากแม้จะไม่มีผลการจับคู่พิกัดภูมิศาสตร์เลย แต่ระบบอาจยังคงแสดงผลช่องระดับคำตอบเพิ่มเติม ดูรายละเอียดเพิ่มเติมใน Fulfill on Zero Results
การตอบกลับการเข้ารหัสพิกัดภูมิศาสตร์
บริการการแปลงที่อยู่เป็นพิกัดภูมิศาสตร์ต้องใช้เมธอดการเรียกกลับเพื่อดำเนินการเมื่อดึงข้อมูลผลลัพธ์ของตัวแปลงที่อยู่เป็นพิกัดภูมิศาสตร์ การเรียกกลับนี้ควรส่งพารามิเตอร์ 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
ระบุนิติบุคคลทางการเมืองระดับประเทศ และโดยปกติจะเป็นประเภทคำสั่งซื้อที่สูงที่สุดที่ตัวระบุพิกัดภูมิศาสตร์แสดง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
หมายถึงนิติบุคคลภาครัฐระดับล่างสุดที่อยู่ภายใต้เขตท้องที่ สำหรับบางสถานที่อาจได้รับป้ายประเภทเพิ่มเติมประเภทใดประเภทหนึ่งต่อไปนี้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
ที่กําหนดขอบเขตสี่เหลี่ยมผืนผ้าสําหรับหุบเขาซานเฟอร์นันโดของลอสแอนเจลิสจะทําให้รหัสพิกัดภูมิศาสตร์นี้แสดงผลเป็นย่านชื่อ "วินเน็ตกา" ในตําแหน่งนั้น
{ "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 อักขระ (ไม่ใช่ตัวเลข) แท็กเหล่านี้จะแมปกับค่า 2 อักขระของ ccTLD ("โดเมนระดับบนสุด") ที่คุ้นเคยโดยตรง เช่น "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); } }); }
ดำเนินการเมื่อไม่มีผลลัพธ์
สําหรับการแปลงพิกัดภูมิศาสตร์แบบย้อนกลับ ระบบจะถือว่าการรับประกันใช้งานไม่ได้ใน status=ZERO_RESULTS
โดยค่าเริ่มต้น อย่างไรก็ตาม ในกรณีนี้ ระบบอาจยังคงป้อนข้อมูลในช่องระดับคำตอบเพิ่มเติมของ plus_code
และ address_descriptor
หากระบุค่า "จริง" สำหรับพารามิเตอร์ fulfillOnZeroResults
ไว้ โปรแกรมจะไม่ละเมิดสัญญาและเข้าถึงช่องเพิ่มเติมเหล่านี้ได้จากสัญญาหากมี
ต่อไปนี้เป็นตัวอย่างลักษณะการทํางานนี้สําหรับละติจูด/ลองจิจูดในทวีปแอนตาร์กติกา
แม้ว่าจะไม่มีผลการแปลงพิกัดภูมิศาสตร์ย้อนกลับ แต่เรายังคงพิมพ์รหัสบวกในพรอมต์ได้หากตั้งค่า fulfillOnZeroResults=true
function addressDescriptorReverseGeocoding() { var latlng = new google.maps.LatLng(-75.290330, 38.653861); geocoder .geocode({ 'location': latlng, 'fulfillOnZeroResults': true, }) .then((response) => { console.log(response.plus_code); }) .catch((error) => { window.alert(`Error`); }); }
ตัวระบุที่อยู่
ตัวระบุที่อยู่มีข้อมูลเพิ่มเติมที่ช่วยอธิบายสถานที่โดยใช้จุดสังเกตและพื้นที่ ดูการสาธิตตัวระบุที่อยู่เพื่อสำรวจฟีเจอร์นี้
คุณเปิดใช้ตัวระบุที่อยู่ได้โดยใช้พารามิเตอร์ 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
การเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับ (การค้นหาที่อยู่)
โดยทั่วไปแล้ว คำว่าการระบุพิกัดภูมิศาสตร์หมายถึงการแปลที่อยู่แบบอ่านได้ของคนเป็นตำแหน่งบนแผนที่ กระบวนการทำในทางกลับกัน ซึ่งก็คือการแปลงสถานที่บนแผนที่ให้เป็นที่อยู่ซึ่งมนุษย์อ่านได้ เรียกว่าการแปลงพิกัดภูมิศาสตร์ย้อนกลับ
แทนที่จะระบุ address
เป็นข้อความ ให้ระบุคู่ละติจูด/ลองจิจูดที่คั่นด้วยคอมมาในพารามิเตอร์ location
ตัวอย่างต่อไปนี้จะจับคู่ค่าละติจูด/ลองจิจูดกับพิกัดภูมิศาสตร์และวางแผนที่ให้อยู่ตรงกลางตำแหน่งนั้น จากนั้นจะแสดงหน้าต่างข้อมูลพร้อมที่อยู่ที่มีการจัดรูปแบบ
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;