ภาพรวม
การระบุพิกัดทางภูมิศาสตร์คือกระบวนการแปลงที่อยู่ (เช่น "1600 Amphitheatre Parkway, Mountain View, CA") เป็นพิกัดทางภูมิศาสตร์ (เช่น ละติจูด 37.423021 และลองจิจูด -122.083739) ซึ่งคุณสามารถใช้วางเครื่องหมายหรือวางตำแหน่งแผนที่ได้
การระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับเป็นกระบวนการแปลงพิกัดทางภูมิศาสตร์เป็นที่อยู่ที่มนุษย์อ่านได้ (ดูการระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับ (การค้นหาที่อยู่))
คุณยังใช้โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์เพื่อค้นหาที่อยู่ของรหัสสถานที่หนึ่งๆ ได้ด้วย
Maps JavaScript API มีคลาส Geocoder สำหรับการระบุพิกัดทางภูมิศาสตร์และการระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับจากข้อมูลที่ผู้ใช้ป้อนแบบไดนามิก แต่หากคุณต้องการเข้ารหัสพิกัดภูมิศาสตร์ที่อยู่คงที่ซึ่งเป็นที่อยู่ที่รู้จักแทน โปรดดูบริการเว็บสำหรับการระบุพิกัดทางภูมิศาสตร์
เริ่มต้นใช้งาน
ก่อนที่จะใช้บริการการระบุพิกัดทางภูมิศาสตร์ใน 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 แล้วเลือกจากรายการผลลัพธ์
- เลือกเปิดใช้ เมื่อขั้นตอนนี้เสร็จสิ้นแล้ว API การระบุพิกัดทางภูมิศาสตร์จะปรากฏในรายการ API ในหน้าแดชบอร์ด
ราคาและนโยบาย
การกำหนดราคา
นับตั้งแต่วันที่ 16 กรกฎาคม 2018 แผนการตั้งราคาแบบใหม่แบบจ่ายเมื่อใช้ได้มีผลกับ Maps, Routes และ Places หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับราคาและข้อจำกัดใหม่ในการใช้งานสำหรับการใช้บริการ JavaScript Geoตามต้องการ โปรดดูที่การใช้งานและการเรียกเก็บเงินสำหรับ Geocoding API
นโยบาย
การใช้บริการการระบุพิกัดทางภูมิศาสตร์ต้องเป็นไปตามนโยบายที่อธิบายไว้สำหรับ Geocoding API
คำขอเกี่ยวกับการระบุพิกัดทางภูมิศาสตร์
การเข้าถึงบริการการระบุพิกัดทางภูมิศาสตร์เป็นแบบไม่พร้อมกัน เนื่องจาก Google Maps API ต้องเรียกไปยังเซิร์ฟเวอร์ภายนอก คุณจึงต้องผ่านเมธอด callback เพื่อดําเนินการเมื่อคําขอเสร็จสมบูรณ์ วิธีเรียกกลับนี้จะประมวลผลผลลัพธ์ โปรดทราบว่าโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์อาจแสดงผลลัพธ์มากกว่า 1 รายการ
คุณเข้าถึงบริการระบุพิกัดทางภูมิศาสตร์ของ Google Maps API ภายในโค้ดผ่านออบเจ็กต์ตัวสร้าง google.maps.Geocoder
เมธอด Geocoder.geocode()
จะเริ่มต้นคำขอไปยังบริการเข้ารหัสพิกัดภูมิศาสตร์ โดยส่งผ่าน Object Literal ของ GeocoderRequest
ที่มีคำอินพุตและวิธีการเรียกกลับเพื่อดำเนินการเมื่อได้รับการตอบสนอง
Object Literal ของ 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
จะมีผลต่อผลลัพธ์ของโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์เท่านั้น ไม่ใช่การจำกัดโดยสมบูรณ์ ดูข้อมูลเพิ่มเติมเกี่ยวกับการให้น้ำหนักรหัสภูมิภาคด้านล่าง
การตอบสนองที่ระบุพิกัดทางภูมิศาสตร์
บริการเข้ารหัสพิกัดภูมิศาสตร์ต้องใช้วิธีเรียกกลับเพื่อทำงานเมื่อดึงข้อมูลผลลัพธ์ของโปรแกรมเข้ารหัสพิกัดภูมิศาสตร์ โค้ดเรียกกลับนี้ควรส่งพารามิเตอร์ 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
แสดงถึงหน่วยงานทางการเมืองระดับประเทศ และโดยทั่วไปจะเป็นประเภทลำดับสูงสุดที่ Geocoder แสดงผลadministrative_area_level_1
หมายถึงนิติบุคคลพลเรือนอันดับ 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 ใช้แทนที่อยู่ในสถานที่ที่ไม่มีอยู่จริงได้ (ที่ไม่มีหมายเลขอาคารหรือไม่มีการตั้งชื่อถนน) ดูรายละเอียดได้ที่ 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 ("โดเมนระดับบนสุด") ที่คุ้นเคยโดยตรง เช่น "uk" ใน "co.uk" ในบางกรณี แท็ก region
ยังรองรับรหัส ISO-3166-1 ด้วย ซึ่งบางครั้งจะแตกต่างจากค่า ccTLD (เช่น "GB" สำหรับ "บริเตนใหญ่")
เมื่อใช้พารามิเตอร์ region
:
- ระบุเพียงประเทศหรือภูมิภาคเดียว ระบบจะไม่สนใจค่าหลายค่า และอาจส่งผลให้คำขอล้มเหลว
- ใช้แท็กย่อยภูมิภาคแบบ 2 อักขระเท่านั้น (รูปแบบ Unicode CLDR) ส่วนอินพุตอื่นๆ ทั้งหมดจะทำให้เกิดข้อผิดพลาด
- รองรับเฉพาะประเทศและภูมิภาคที่แสดงอยู่ในรายละเอียดการครอบคลุมของ Google Maps Platform เท่านั้น
คุณสามารถส่งคำขอระบุพิกัดทางภูมิศาสตร์สำหรับทุกโดเมนที่แอปพลิเคชัน Google Maps หลักเสนอการระบุพิกัดทางภูมิศาสตร์ได้ โปรดทราบว่าการให้น้ำหนักเฉพาะต้องการผลลัพธ์สำหรับโดเมนที่ระบุ หากมีผลลัพธ์ที่เกี่ยวข้องมากกว่าภายนอกโดเมนนี้ อาจมีการรวมผลลัพธ์เหล่านั้น
ตัวอย่างเช่น พิกัดทางภูมิศาสตร์ของ "Toledo" จะแสดงผลการค้นหานี้ เนื่องจากมีการตั้งค่าโดเมนเริ่มต้นสำหรับบริการการระบุพิกัดทางภูมิศาสตร์เป็นสหรัฐอเมริกา ดังนี้
{ "types":["locality","political"], "formatted_address":"Toledo, OH, USA", "address_components":[{ "long_name":"Toledo", "short_name":"Toledo", "types":["locality","political"] },{ "long_name":"Ohio", "short_name":"OH", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "place_id": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw" }
พิกัดทางภูมิศาสตร์ของ "โตเลโด" ที่ตั้งค่าช่อง 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
ค่าตัวกรองรองรับวิธีการแก้ไขตัวสะกดและการจับคู่บางส่วนเหมือนกับคำขอการระบุพิกัดทางภูมิศาสตร์อื่นๆ
โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์จะแสดงเฉพาะผลลัพธ์ที่ตรงกับตัวกรองคอมโพเนนต์ทั้งหมด กล่าวคือ ระบบจะประเมินข้อมูลจำเพาะของตัวกรองเป็น AND ไม่ใช่ OR
ตัวกรองคอมโพเนนต์ประกอบด้วยรายการต่อไปนี้อย่างน้อย 1 รายการ
route
ตรงกับชื่อเส้นทางยาวหรือสั้นlocality
จับคู่กับประเภทย่านและย่านย่อยadministrativeArea
ตรงกับระดับเขตบริหารทุกระดับpostalCode
ตรงกับรหัสไปรษณีย์และรหัสนำหน้ารหัสไปรษณีย์country
ตรงกับชื่อประเทศหรือรหัสประเทศ 2 ตัวอักษร ISO 3166-1 หมายเหตุ: API เป็นไปตามมาตรฐาน ISO สำหรับการกำหนดประเทศ และการกรองจะทำงานได้ดีที่สุดเมื่อใช้รหัส ISO ที่เกี่ยวข้องของประเทศ
ตัวอย่างต่อไปนี้สาธิตการใช้พารามิเตอร์
componentRestrictions
เพื่อกรองตาม country
และ postalCode
function codeAddress() { geocoder.geocode({ componentRestrictions: { country: 'AU', postalCode: '2000' } }, function(results, status) { if (status == 'OK') { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } else { window.alert('Geocode was not successful for the following reason: ' + status); } }); }
การระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับ (การค้นหาที่อยู่)
คำว่าการระบุพิกัดทางภูมิศาสตร์โดยทั่วไปหมายถึงการแปลที่อยู่ที่มนุษย์อ่านให้เป็นตำแหน่งบนแผนที่ กระบวนการแปลงข้อมูลสถานที่บนแผนที่ให้เป็นที่อยู่ที่มนุษย์อ่านได้เรียกว่าการระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับ
ป้อนคู่ละติจูด/ลองจิจูดที่คั่นด้วยคอมมาในพารามิเตอร์ 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;