ภาพรวม
การระบุพิกัดทางภูมิศาสตร์คือกระบวนการแปลงที่อยู่ (เช่น "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 Console
- คลิกปุ่มเลือกโปรเจ็กต์ แล้วเลือกโปรเจ็กต์เดียวกับที่คุณตั้งค่าสําหรับ Maps JavaScript API แล้วคลิกเปิด
- จากรายการ API ในหน้าแดชบอร์ด ให้มองหา API การระบุพิกัดทางภูมิศาสตร์
- หากคุณเห็น API ในรายการ แสดงว่าทุกอย่างเรียบร้อยแล้ว หาก API ไม่ได้แสดงอยู่ ให้เปิดใช้
- ที่ด้านบนของหน้า ให้เลือกเปิดใช้ API เพื่อแสดงแท็บไลบรารี หรือเลือกคลังจากเมนูด้านซ้าย
- ค้นหา Geocoding API แล้วเลือกจากรายการผลลัพธ์
- เลือกเปิดใช้ เมื่อประมวลผลเสร็จแล้ว API การระบุพิกัดทางภูมิศาสตร์จะปรากฏในรายการ API ในหน้าแดชบอร์ด
ราคาและนโยบาย
การกำหนดราคา
ตั้งแต่วันที่ 16 กรกฎาคม 2018 เป็นต้นไป แผนการตั้งราคาแบบจ่ายเมื่อใช้ใหม่จะมีผลบังคับใช้สําหรับ Maps, Routes และ Places หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับขีดจํากัดการกําหนดราคาและการใช้งานใหม่สําหรับบริการ Geocoding ของ JavaScript โปรดดูการใช้งานและการเรียกเก็บเงินสําหรับ Geocoding API
นโยบาย
การใช้บริการ Geocoding ต้องเป็นไปตามนโยบายที่อธิบายสําหรับ Geocoding API
คําขอพิกัดทางภูมิศาสตร์
การเข้าถึงบริการ Geocoding เป็นแบบอะซิงโครนัส เนื่องจาก Google Maps API จําเป็นต้องเรียกไปยังเซิร์ฟเวอร์ภายนอก ด้วยเหตุนี้ คุณจึงต้องส่งเมธอด 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 ช่องและเพียง 1 ช่อง
address
— ที่อยู่ที่คุณต้องการจะเข้ารหัสพิกัดทางภูมิศาสตร์
หรือ
location
—LatLng
(หรือLatLngLiteral
) ที่คุณต้องการให้ได้ที่อยู่ที่มนุษย์อ่านได้ใกล้ที่สุด โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์จะดําเนินการเข้ารหัสลับโดเมนย้อนกลับ ดูข้อมูลเพิ่มเติมที่การระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับ
หรือ
placeId
— รหัสสถานที่ของสถานที่ที่คุณต้องการได้รับที่อยู่ที่ใกล้เคียงและมนุษย์อ่านได้ ดูข้อมูลเพิ่มเติมเกี่ยวกับการเรียกข้อมูลที่อยู่สําหรับรหัสสถานที่
พารามิเตอร์ที่ไม่บังคับ
bounds
-LatLngBounds
ที่ภายในเพื่อให้การให้น้ําหนักผลลัพธ์ตามพิกัดได้ชัดเจนขึ้น พารามิเตอร์bounds
จะส่งผลกระทบเฉพาะกับรหัสพิกัดเท่านั้นโดยไม่จํากัดเฉพาะผลลัพธ์ทั้งหมด ดูข้อมูลเพิ่มเติมเกี่ยวกับการให้น้ําหนักวิวพอร์ต ด้านล่างcomponentRestrictions
— ใช้เพื่อจํากัดผลการค้นหาไว้เฉพาะบางพื้นที่ ดูข้อมูลเพิ่มเติมเกี่ยวกับการกรองคอมโพเนนต์ด้านล่างregion
— รหัสภูมิภาคที่ระบุเป็นแท็กย่อย Unicode ในภูมิภาคแบบ 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
เป็น "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 APIs อื่นๆ ได้ ตัวอย่างเช่น คุณใช้place_id
ที่มีไลบรารี Google Places API เพื่อดูรายละเอียดของธุรกิจในพื้นที่ได้ เช่น หมายเลขโทรศัพท์ เวลาทําการ รีวิวจากผู้ใช้ และอื่นๆ ดู ภาพรวมรหัสสถานที่postcode_localities[]
เป็นอาร์เรย์ที่แสดงชื่อย่านทั้งหมดที่มีอยู่ในรหัสไปรษณีย์ และจะปรากฏขึ้นเมื่อผลลัพธ์เป็นรหัสไปรษณีย์ที่มีในหลายพื้นที่เท่านั้นgeometry
มีข้อมูลต่อไปนี้location
มีค่าละติจูดพิกัดลองจิจูด โปรดทราบว่าเราแสดงผลตําแหน่งนี้เป็นออบเจ็กต์LatLng
ไม่ใช่สตริงที่จัดรูปแบบแล้วlocation_type
เก็บข้อมูลเพิ่มเติมเกี่ยวกับตําแหน่งที่ระบุ ค่าที่รองรับมีดังนี้ROOFTOP
บ่งบอกว่าผลการค้นหาที่แสดงแสดงพิกัดทางภูมิศาสตร์ที่ถูกต้องRANGE_INTERPOLATED
บ่งบอกว่าผลลัพธ์ที่ส่งกลับเป็นค่าโดยประมาณ (มักจะอยู่บนถนน) ซึ่งอยู่ระหว่าง 2 จุดที่แน่นอน (เช่น ทางแยก) โดยทั่วไปแล้ว ผลการค้นหาที่มีการประมาณนั้นจะส่งคืนเมื่อพิกัดทางภูมิศาสตร์ไม่พร้อมใช้งานสําหรับที่อยู่GEOMETRIC_CENTER
บ่งบอกว่าผลลัพธ์ที่ส่งคืนเป็นจุดศูนย์กลางของผลลัพธ์ เช่น โพลีไลน์ (เช่น ถนน) หรือรูปหลายเหลี่ยม (ภูมิภาค)APPROXIMATE
บ่งบอกว่าผลลัพธ์ที่ส่งกลับเป็นค่าโดยประมาณ
viewport
จัดเก็บวิวพอร์ตที่แนะนําสําหรับผลลัพธ์ที่แสดงผลbounds
(ไม่บังคับ) จัดเก็บLatLngBounds
ซึ่งจะมีผลลัพธ์ที่แสดงผลโดยสมบูรณ์ได้ โปรดทราบว่าขอบเขตเหล่านี้ไม่ตรงกับวิวพอร์ตที่แนะนํา (เช่น ซานฟรานซิสโกมีหมู่เกาะแฟลลอนซึ่งเป็นส่วนหนึ่งของเมืองในทางเทคนิค แต่ไม่ควรส่งกลับในวิวพอร์ต)
ที่อยู่จะส่งกลับมาโดย Geocoder โดยใช้การตั้งค่าภาษาที่เบราว์เซอร์ต้องการ หรือภาษาที่ระบุเมื่อโหลด API แบบ JavaScript โดยใช้พารามิเตอร์ language
(สําหรับข้อมูลเพิ่มเติม โปรดดู
การแปล)
ประเภทที่อยู่และประเภทส่วนประกอบที่อยู่
อาร์เรย์ types[]
ใน GeocoderResult ระบุประเภทที่อยู่ นอกจากนี้ อาจส่งกลับอาร์เรย์ types[]
ภายใน GeocoderAddressComponent เพื่อระบุประเภทของคอมโพเนนต์ที่อยู่ที่เจาะจง อีเมลที่แสดงโดยโปรแกรมพิกัดทางภูมิศาสตร์อาจมีหลายประเภท อาจถือว่าเป็นประเภทแท็ก
ตัวอย่างเช่น หลายๆ เมืองได้รับการติดแท็กด้วยประเภท political
และ locality
ระบบรองรับและแสดงพิกัดประเภทต่อไปนี้ทั้งในประเภทที่อยู่และประเภทคอมโพเนนต์ที่อยู่
street_address
หมายถึงที่อยู่ที่ถูกต้องroute
หมายถึงเส้นทางที่มีชื่อ (เช่น "US 101")intersection
หมายถึงทางแยกหลัก ซึ่งปกติแล้วจะเป็นถนนสายหลัก 2 แห่งpolitical
หมายถึงหน่วยงานทางการเมือง ซึ่งโดยปกติแล้วจะระบุรูปหลายเหลี่ยมของการบริหารพลเรือนบางอย่างcountry
เป็นหน่วยงานทางการเมืองระดับชาติ และโดยทั่วไปจะเป็นประเภทลําดับสูงสุดที่มาจาก Geocoderadministrative_area_level_1
หมายถึงเอนทิตีลําดับแรกสําหรับคําสั่งซื้อที่ต่ํากว่าระดับประเทศ ในสหรัฐอเมริกา ระดับการดูแลระบบเหล่านี้คือรัฐ บางประเทศอาจไม่ได้แสดงระดับการดูแลระบบเหล่านี้ ในกรณีส่วนใหญ่ ชื่อย่อ admin_area_level_1 จะตรงกับส่วนย่อยของ ISO 3166-2 และรายการอื่นๆ ที่มีการเผยแพร่อย่างแพร่หลาย อย่างไรก็ตาม วิธีนี้ไม่รับประกันว่าผลลัพธ์การระบุพิกัดทางภูมิศาสตร์ของเราจะอิงตามสัญญาณและข้อมูลตําแหน่งที่หลากหลายadministrative_area_level_2
หมายถึงเอนทิตีลําดับที่สองของลําดับที่ต่ํากว่าระดับประเทศ สําหรับสหรัฐอเมริกา ระดับการดูแลระบบเหล่านี้เป็นเคาน์ตี บางประเทศอาจไม่ได้แสดงระดับการดูแลระบบเหล่านี้administrative_area_level_3
หมายถึงเอนทิตีลําดับที่ 3 ของลําดับที่ต่ํากว่า ระดับประเทศ ประเภทนี้แสดงถึงแผนกย่อย บางประเทศอาจไม่ได้แสดงระดับการดูแลระบบเหล่านี้administrative_area_level_4
เป็นเอนทิตีลําดับที่ 4 ลําดับต่ํากว่าระดับประเทศ ประเภทนี้แสดงถึงแผนกย่อย บางประเทศอาจไม่ได้แสดงระดับการดูแลระบบเหล่านี้administrative_area_level_5
หมายถึงเอนทิตีลําดับที่ 5 ลําดับต่ํากว่าระดับประเทศ ประเภทนี้แสดงถึงแผนกย่อย บางประเทศอาจไม่ได้แสดงระดับการดูแลระบบเหล่านี้administrative_area_level_6
ระบุเอนทิตีลําดับที่ 6 ของลําดับต่ํากว่าระดับประเทศ ประเภทนี้แสดงถึงแผนกย่อย บางประเทศอาจไม่ได้แสดงระดับการดูแลระบบเหล่านี้administrative_area_level_7
บ่งบอกว่าเป็นหน่วยงานโยธาลําดับที่ 7 ระดับประเทศ ประเภทนี้แสดงถึงแผนกย่อย บางประเทศอาจไม่ได้แสดงระดับการดูแลระบบเหล่านี้colloquial_area
หมายถึงชื่ออื่นที่ใช้กันโดยทั่วไปสําหรับเอนทิตีlocality
เป็นหน่วยงานทางการเมืองระดับเมืองsublocality
เป็นเอนทิตีลําดับแรกสําหรับลําดับที่อยู่ต่ํากว่าสถานที่ตั้ง สถานที่บางแห่งอาจได้รับประเภทเพิ่มเติม 1 ประเภท ได้แก่sublocality_level_1
ถึงsublocality_level_5
ระดับย่อยระดับย่อยเป็นเอนทิตีระดับโยธา จํานวนที่มากกว่าหมายถึงพื้นที่ทางภูมิศาสตร์ที่มีขนาดเล็กneighborhood
หมายถึงย่านใกล้เคียงที่มีชื่อpremise
แสดงถึงสถานที่ที่มีชื่อ ซึ่งโดยปกติจะเป็นอาคารหรือคอลเล็กชันของอาคารที่มีชื่อทั่วไปsubpremise
ระบุเอนทิตีคําสั่งซื้อแรกด้านล่างสถานที่ตั้งที่มีชื่อ โดยทั่วไปจะเป็นอาคารเอกพจน์ภายในกลุ่มอาคารที่มีชื่อเดียวกันplus_code
หมายถึงการอ้างอิงตําแหน่งที่เข้ารหัสซึ่งมาจากละติจูดและลองจิจูด Plus Codes สามารถใช้แทนที่ที่อยู่ของที่อยู่ในสถานที่ที่ไม่มีอยู่จริงได้ (โดยไม่มีหมายเลขอาคารหรือไม่มีชื่อถนน) ดูรายละเอียดได้ที่ https://plus.codespostal_code
หมายถึงรหัสไปรษณีย์ที่ใช้ระบุที่อยู่ไปรษณีย์ภายในประเทศnatural_feature
หมายถึงจุดสนใจตามธรรมชาติairport
หมายถึงสนามบินpark
หมายถึงสวนสาธารณะที่มีชื่อpoint_of_interest
หมายถึงจุดสนใจที่มีชื่อ โดยทั่วไปแล้ว "POI" เหล่านี้เป็นเอนทิตีในพื้นที่ที่โดดเด่นซึ่งไม่เหมาะกับหมวดหมู่อื่น เช่น "ตึกเอ็มไพร์สเตท" หรือ "หอไอเฟล"
รายการประเภทว่างเปล่าหมายความว่าไม่มีประเภทที่รู้จักสําหรับคอมโพเนนต์ที่อยู่หนึ่งๆ เช่น Lieu-dit ในฝรั่งเศส
นอกเหนือจากที่กล่าวมาข้างต้น องค์ประกอบของที่อยู่อาจรวมประเภทดังต่อไปนี้
หมายเหตุ: รายการนี้ยังไม่ครบถ้วนสมบูรณ์และอาจมีการเปลี่ยนแปลง
floor
หมายถึงชั้นของที่อยู่อาคาร- โดยปกติแล้ว
establishment
จะระบุสถานที่ที่ยังไม่ได้รับการจัดหมวดหมู่ landmark
แสดงสถานที่ใกล้เคียงที่ใช้เป็นข้อมูลอ้างอิงเพื่อช่วยนําทางpoint_of_interest
หมายถึงจุดสนใจที่มีชื่อparking
หมายถึงที่จอดรถหรือโครงสร้างที่จอดรถpost_box
หมายถึงตู้ไปรษณีย์ที่เฉพาะเจาะจงpostal_town
ระบุการจัดกลุ่มพื้นที่ทางภูมิศาสตร์ เช่นlocality
และsublocality
ซึ่งใช้สําหรับที่อยู่จัดส่งในบางประเทศroom
หมายถึงห้องของที่อยู่อาคารstreet_number
ระบุเลขที่ถนนที่ถูกต้องbus_station
,train_station
และtransit_station
ระบุตําแหน่งของป้ายรถเมล์ รถไฟ หรือขนส่งสาธารณะ
รหัสสถานะ
โค้ด status
อาจส่งคืนค่าใดค่าหนึ่งต่อไปนี้
"OK"
บ่งบอกว่าไม่มีข้อผิดพลาดเกิดขึ้น ระบบแยกวิเคราะห์ที่อยู่สําเร็จแล้วและแสดงพิกัดทางภูมิศาสตร์อย่างน้อย 1 รายการ"ZERO_RESULTS"
ระบุว่ารหัสพิกัดทํางานสําเร็จ แต่ไม่พบผลลัพธ์ กรณีนี้อาจเกิดขึ้นหากโปรแกรมพิกัดภูมิศาสตร์ผ่านaddress
ที่ไม่มีอยู่จริง"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
เพื่อกําหนดกรอบล้อมรอบ San Fernando Valley ของลอสแอนเจลิส ทําให้ระบบพิกัดทางภูมิศาสตร์ที่แสดงย่านใกล้เคียงที่ชื่อ "Winnetka" อยู่ในตําแหน่งดังกล่าว
{ "types":["sublocality","political"], "formatted_address":"Winnetka, California, USA", "address_components":[{ "long_name":"Winnetka", "short_name":"Winnetka", "types":["sublocality","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_3","political"] },{ "long_name":"Los Angeles", "short_name":"Los Angeles", "types":["administrative_area_level_2","political"] },{ "long_name":"California", "short_name":"CA", "types":["administrative_area_level_1","political"] },{ "long_name":"United States", "short_name":"US", "types":["country","political"] }], "geometry":{ "location": [34.213171,-118.571022], "location_type":"APPROXIMATE" }, "place_id": "ChIJ0fd4S_KbwoAR2hRDrsr3HmQ" }
การให้น้ําหนักภูมิภาค
คุณสามารถตั้งค่าบริการการระบุพิกัดทางภูมิศาสตร์เพื่อส่งคืนการให้น้ําหนักพิเศษกับภูมิภาคใดภูมิภาคหนึ่งอย่างชัดแจ้ง โดยใช้พารามิเตอร์ region
พารามิเตอร์นี้จะนํารหัสภูมิภาคที่ระบุเป็นแท็กย่อย Unicode ภูมิภาคแบบ 2 อักขระ (ไม่ใช่ตัวเลข) แท็กเหล่านี้จะแมปกับ ccTLD ทั่วไป ("โดเมนระดับบนสุด") โดยตรงด้วยอักขระ 2 ตัว เช่น "uk" ใน "co.uk" ในบางกรณี แท็ก region
ยังรองรับรหัส ISO-3166-1 ซึ่งบางครั้งจะแตกต่างจากค่า ccTLD (เช่น "GB" สําหรับ "บริเตนใหญ่")
เมื่อใช้พารามิเตอร์ region
- ระบุประเทศหรือภูมิภาคเดียวเท่านั้น ระบบจะละเว้นค่าหลายค่าและอาจส่งผลให้คําขอล้มเหลว
- ใช้เฉพาะแท็กย่อยภูมิภาค 2 อักขระ (รูปแบบ Unicode CLDR) อินพุตอื่นๆ ทั้งหมดจะทําให้เกิดข้อผิดพลาด
- รองรับเฉพาะประเทศและภูมิภาคที่ระบุไว้ในรายละเอียดการครอบคลุมของ Google Maps Platform
คุณสามารถส่งคําขอพิกัดทางภูมิศาสตร์ได้กับทุกโดเมนที่แอปพลิเคชัน Google Maps หลักเสนอการระบุพิกัดทางภูมิศาสตร์ โปรดทราบว่าการให้น้ําหนักพิเศษเฉพาะผลลัพธ์สําหรับโดเมนที่ระบุเท่านั้น หากมีผลลัพธ์ที่เกี่ยวข้องภายนอกโดเมนนี้ ผลลัพธ์เหล่านี้อาจรวมอยู่ในโดเมนดังกล่าว
เช่น พิกัดทางภูมิศาสตร์สําหรับ "โตเลโด" จะแสดงผลนี้เนื่องจากมีการตั้งค่าโดเมนเริ่มต้นสําหรับบริการการระบุพิกัดทางภูมิศาสตร์เป็นสหรัฐอเมริกา
{ "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
ค่าตัวกรองรองรับวิธีการแก้ไขการสะกดแบบเดียวกันกับการจับคู่บางส่วนกับคําขอการระบุพิกัดทางภูมิศาสตร์อื่นๆ
โปรแกรมเข้ารหัสพิกัดจะแสดงผลลัพธ์ที่ตรงกับตัวกรองคอมโพเนนต์ทั้งหมดเท่านั้น กล่าวคือ จะประเมินข้อมูลจําเพาะของตัวกรองเป็น "และ" ไม่ใช่ "หรือ"
ตัวกรองคอมโพเนนต์ประกอบด้วยรายการต่อไปนี้อย่างน้อย 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); } }); }
การระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับ (การค้นหาที่อยู่)
โดยทั่วไป คําว่าการระบุพิกัดทางภูมิศาสตร์หมายถึงการแปลที่อยู่ที่มนุษย์อ่านได้ให้เป็นสถานที่ตั้งในแผนที่ ขั้นตอนตรงกันข้าม เช่น การแปลตําแหน่งบนแผนที่ให้เป็นที่อยู่ที่มนุษย์อ่านได้ เรียกว่าการระบุพิกัดทางภูมิศาสตร์แบบย้อนกลับ
แทนที่จะระบุ 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 APIs อื่นๆ ได้ ตัวอย่างเช่น คุณอาจระบุ 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;