การแปลงพิกัดภูมิศาสตร์จะแปลงที่อยู่เป็นตำแหน่งบนแผนที่ เมื่อ คุณเข้ารหัสที่อยู่ทางภูมิศาสตร์ คำตอบจะมีข้อมูลต่อไปนี้
- รหัสสถานที่ของ สถานที่ตั้ง
- พิกัดละติจูดและลองจิจูดของสถานที่
- Plus Code ของสถานที่
- รายละเอียดที่อยู่ที่ขยาย
คำขอรหัสพิกัดภูมิศาสตร์
คำขอ Geocode คือคำขอ HTTP GET คุณระบุที่อยู่เป็นสตริง ที่ไม่มีโครงสร้างได้ดังนี้
https://geocode.googleapis.com/v4beta/geocode/address/ADDRESS_STRING
หรือเป็นชุดคอมโพเนนต์ของที่อยู่ที่จัดโครงสร้าง ซึ่งแสดงด้วยพารามิเตอร์การค้นหา
https://geocode.googleapis.com/v4beta/geocode/address?STRUCTURED_ADDRESS
โดยปกติแล้ว คุณจะใช้รูปแบบที่มีโครงสร้างเมื่อประมวลผลคอมโพเนนต์ของที่อยู่ที่ บันทึกไว้ในแบบฟอร์ม HTML
ส่งพารามิเตอร์อื่นๆ ทั้งหมดเป็นพารามิเตอร์ URL หรือสำหรับพารามิเตอร์ เช่น API key และฟิลด์มาสก์ ให้ส่งในส่วนหัวเป็นส่วนหนึ่งของคำขอ GET
ส่งสตริงที่อยู่ที่ไม่มีโครงสร้าง
ที่อยู่ที่ไม่มีโครงสร้างคือที่อยู่ที่จัดรูปแบบเป็นสตริงหรือ Plus Code ตัวอย่างเช่น ตัวอย่างต่อไปนี้จะส่งสตริงที่อยู่ซึ่งเข้ารหัส URL "1600 Amphitheatre Parkway, Mountain View, CA"
https://geocode.googleapis.com/v4beta/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA?key=API_KEY
โปรดทราบว่าระบบจะแปลงอักขระ "+" ใน URL เป็นช่องว่าง
นอกจากนี้ คุณยังส่งคำขอโดยใช้คำสั่ง curl ได้ด้วย
curl -H "X-Goog-Api-Key: API_KEY" \ "https://geocode.googleapis.com/v4beta/geocode/address/1600+Amphitheatre+Parkway,+Mountain+View,+CA"
ที่อยู่มีสัญลักษณ์พิเศษได้หลายประเภท เช่น "/" ใน "7/1 King St, Concord West" เข้ารหัส URL "/" เป็น %2F
https://geocode.googleapis.com/v4beta/geocode/address/7%2F1+King+St,+Concord+West?key=API_KEY
อีกตัวอย่างที่พบบ่อยคืออักขระ "#" เช่น "9500 W Bryn Mawr Ave #650, Rosemont" เข้ารหัส URL "#" เป็น %2FE
https://geocode.googleapis.com/v4beta/geocode/address/9500+W+Bryn+Mawr+Ave+%23650,+Rosemont?key=API_KEY
ในตัวอย่างถัดไป คุณจะระบุสตริงที่อยู่แบบไม่มีโครงสร้างเป็น
รหัส Plus 849VCWC8+R4 ตรวจสอบว่าคุณได้เข้ารหัส URL สำหรับอักขระ "+" เป็น %2B
https://geocode.googleapis.com/v4beta/geocode/address/849VCWC8%2BR4?key=API_KEY
ส่งที่อยู่ที่มีโครงสร้าง
ระบุที่อยู่ที่มีโครงสร้างโดยใช้พารามิเตอร์การค้นหา address ที่มีประเภท
PostalAddress
ออบเจ็กต์ PostalAddress ช่วยให้คุณระบุคอมโพเนนต์ที่อยู่บางส่วนหรือทั้งหมดในคำขอเป็นพารามิเตอร์การค้นหาแต่ละรายการได้
เช่น หากต้องการระบุเฉพาะรหัสไปรษณีย์ของที่อยู่ที่คุณใช้
PostalAddress.postalCode
https://geocode.googleapis.com/v4beta/geocode/address?address.postalCode=01062&key=API_KEY
หากต้องการระบุคอมโพเนนต์ที่อยู่หลายรายการ เช่น คอมโพเนนต์ที่อยู่ที่บันทึกไว้ในแบบฟอร์ม HTML ให้ใช้พารามิเตอร์การค้นหาหลายรายการ ดังนี้
https://geocode.googleapis.com/v4beta/geocode/address?address.addressLines=1600+Amphithreater+Pkwy&address.locality=Mountain+View &address.administrativeArea=CA &key=API_KEY
ใช้ OAuth เพื่อส่งคำขอ
Geocoding API v4 รองรับ OAuth 2.0 สำหรับการตรวจสอบสิทธิ์ หากต้องการใช้ OAuth กับ Geocoding API คุณต้องกำหนดขอบเขตที่ถูกต้องให้กับโทเค็น OAuth Geocoding API รองรับขอบเขตต่อไปนี้เพื่อใช้กับการแปลงพิกัดทางภูมิศาสตร์
https://www.googleapis.com/auth/maps-platform.geocode— ใช้กับปลายทาง Geocoding API ทั้งหมดhttps://www.googleapis.com/auth/maps-platform.geocode.address— ใช้กับGeocodeAddressเท่านั้นสำหรับการแปลงพิกัดเป็นชื่อสถานที่
นอกจากนี้ คุณยังใช้https://www.googleapis.com/auth/cloud-platform
ขอบเขตทั่วไปสำหรับปลายทาง Geocoding API ทั้งหมดได้ด้วย ขอบเขตดังกล่าวมีประโยชน์ในระหว่างการพัฒนา แต่ไม่ใช่ในเวอร์ชันที่ใช้งานจริง เนื่องจากเป็นขอบเขตทั่วไปที่อนุญาตให้เข้าถึงปลายทางทั้งหมด
ดูข้อมูลและตัวอย่างเพิ่มเติมได้ที่ ใช้ OAuth
การตอบกลับของรหัสพิกัดภูมิศาสตร์
การแปลงรหัสพิกัดภูมิศาสตร์จะแสดงผลออบเจ็กต์
GeocodeAddressResponse
ที่มีอาร์เรย์ results ของออบเจ็กต์
GeocodeResult
ออบเจ็กต์ GeocodeResult แต่ละรายการแสดงสถานที่เดียว
ออบเจ็กต์ JSON ที่สมบูรณ์อยู่ในรูปแบบต่อไปนี้
{ "results": [ { "place": "//places.googleapis.com/places/ChIJF4Yf2Ry7j4AR__1AkytDyAE", "placeId": "ChIJF4Yf2Ry7j4AR__1AkytDyAE", "location": { "latitude": 37.422010799999995, "longitude": -122.08474779999999 }, "granularity": "ROOFTOP", "viewport": { "low": { "latitude": 37.420656719708511, "longitude": -122.08547523029148 }, "high": { "latitude": 37.4233546802915, "longitude": -122.0827772697085 } }, "formattedAddress": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", "postalAddress": { "regionCode": "US", "languageCode": "en", "postalCode": "94043", "administrativeArea": "CA", "locality": "Mountain View", "addressLines": [ "1600 Amphitheatre Pkwy" ] }, "addressComponents": [ { "longText": "1600", "shortText": "1600", "types": [ "street_number" ] }, { "longText": "Amphitheatre Parkway", "shortText": "Amphitheatre Pkwy", "types": [ "route" ], "languageCode": "en" }, ... ], "types": [ "street_address" ], "plusCode": { "globalCode": "849VCWC8+R4", "compoundCode": "CWC8+R4 Mountain View, CA, USA" } } ] }
พารามิเตอร์ที่จำเป็น
address— ที่อยู่ไปรษณีย์หรือ Plus Code ที่ต้องการเข้ารหัสพิกัดภูมิศาสตร์ ระบุที่อยู่ตามรูปแบบ ที่ใช้โดยบริการไปรษณีย์แห่งชาติของประเทศที่เกี่ยวข้อง ไม่ควรระบุองค์ประกอบที่อยู่เพิ่มเติม เช่น ชื่อธุรกิจ และหมายเลขยูนิต ห้องชุด หรือชั้น องค์ประกอบที่อยู่ควรคั่นด้วยช่องว่าง เข้ารหัส URL เป็น%20เช่น ส่งที่อยู่ "24 Sussex Drive Ottawa ON" ดังนี้ จัดรูปแบบ Plus Codes ดังที่แสดงด้านล่าง เครื่องหมายบวกจะได้รับการเข้ารหัส URL เป็น24%20Sussex%20Drive%20Ottawa%20ON
%2Bและการเว้นวรรคจะได้รับการเข้ารหัส URL เป็น%20- รหัสสากลคือรหัสพื้นที่ 4 อักขระและรหัสท้องถิ่น 6 อักขระขึ้นไป
เช่น เข้ารหัส "849VCWC8+R9" เป็น
849VCWC8%2BR9 - รหัสผสมคือรหัสท้องถิ่นที่มีอักขระ 6 ตัวขึ้นไปและมี
ระบุสถานที่ตั้งอย่างชัดเจน เช่น เข้ารหัส "CWC8+R9 Mountain View, CA, USA"
เป็น
CWC8%2BR9%20Mountain%20View%20CA%20USA
- รหัสสากลคือรหัสพื้นที่ 4 อักขระและรหัสท้องถิ่น 6 อักขระขึ้นไป
เช่น เข้ารหัส "849VCWC8+R9" เป็น
พารามิเตอร์ที่ไม่บังคับ
locationBias
ระบุพื้นที่ที่จะค้นหาเป็น
Viewportตำแหน่งนี้ทำหน้าที่เป็นค่าอคติ ซึ่งหมายความว่าระบบจะแสดงผลลัพธ์รอบๆ ตำแหน่งที่ระบุ รวมถึงผลลัพธ์ที่อยู่ใกล้แต่ไม่อยู่ในพื้นที่ระบุภูมิภาคเป็นวิวพอร์ตสี่เหลี่ยมผืนผ้า สี่เหลี่ยมผืนผ้าคือ วิวพอร์ตละติจูด-ลองจิจูด ซึ่งแสดงเป็นจุดต่ำและจุดสูง 2 จุด ที่อยู่ตรงข้ามกันในแนวทแยง จุดต่ำสุดจะทำเครื่องหมายมุมตะวันตกเฉียงใต้ ของสี่เหลี่ยมผืนผ้า และจุดสูงสุดจะแสดงมุมตะวันออกเฉียงเหนือ ของสี่เหลี่ยมผืนผ้า
ระบบจะถือว่าวิวพอร์ตเป็น ภูมิภาคปิด ซึ่งหมายความว่ารวมถึงขอบเขตของวิวพอร์ตด้วย ขอบเขตละติจูด ต้องอยู่ระหว่าง -90 ถึง 90 องศา และขอบเขตลองจิจูด ต้องอยู่ระหว่าง -180 ถึง 180 องศา
- หาก
low=highวิวพอร์ตจะประกอบด้วย จุดเดียว - หาก
low.longitude>high.longitudeระบบจะกลับช่วงลองจิจูด (วิวพอร์ตข้ามเส้นลองจิจูด 180 องศา) - หาก
low.longitude= -180 องศา และhigh.longitude= 180 องศา วิวพอร์ตจะรวมลองจิจูดทั้งหมด - หาก
low.longitude= 180 องศาและhigh.longitude= -180 องศา ช่วงลองจิจูดจะ ว่างเปล่า - หาก
low.latitude>high.latitudeช่วงละติจูดจะว่าง
คุณต้องระบุทั้งค่าต่ำสุดและค่าสูงสุด และช่องที่แสดงต้องไม่ว่าง โดยวิวพอร์ตที่ว่างเปล่าจะทำให้เกิดข้อผิดพลาด
ตัวอย่างเช่น สตริงการค้นหานี้จะกําหนดกรอบมุมมองที่ครอบคลุมนิวยอร์กซิตี้ทั้งหมด
?locationBias.rectangle.low.latitude=40.477398
&locationBias.rectangle.low.longitude=-74.259087 &locationBias.rectangle.high.latitude=40.91618 &locationBias.rectangle.high.longitude=-73.70018 - หาก
languageCode
ภาษาที่จะแสดงผลลัพธ์
- ดู รายการภาษาที่รองรับ Google มักจะอัปเดต ภาษาที่รองรับอยู่เสมอ ดังนั้นรายการนี้จึงอาจไม่ครอบคลุมทั้งหมด
-
หากไม่ได้ระบุ
languageCodeAPI จะใช้enเป็นค่าเริ่มต้น หาก คุณระบุรหัสภาษาที่ไม่ถูกต้อง API จะแสดงข้อผิดพลาดINVALID_ARGUMENT - API จะพยายามอย่างเต็มที่เพื่อให้ที่อยู่แบบถนนที่อ่านได้สำหรับทั้งผู้ใช้และคนในพื้นที่ เพื่อให้บรรลุเป้าหมายดังกล่าว ระบบจะแสดงที่อยู่ ถนนในภาษาท้องถิ่น โดยแปลงเป็นตัวอักษรที่ผู้ใช้อ่านได้หากจำเป็น และเป็นไปตามภาษาที่ต้องการ ส่วนที่อยู่อื่นๆ จะแสดงในภาษาที่ต้องการ คอมโพเนนต์ของที่อยู่ ทั้งหมดจะแสดงในภาษาเดียวกัน ซึ่งเลือกจากคอมโพเนนต์แรก
- หากชื่อไม่มีให้บริการในภาษาที่ต้องการ API จะใช้ชื่อที่ ใกล้เคียงที่สุด
- ภาษาที่ต้องการมีผลเล็กน้อยต่อชุดผลลัพธ์ที่ API เลือกที่จะแสดงผล และลำดับที่แสดงผล Geocoder จะตีความตัวย่อแตกต่างกันไปตามภาษา เช่น ตัวย่อสำหรับประเภทถนน หรือคำพ้องความหมายที่อาจ ใช้ได้ในภาษาหนึ่งแต่ใช้ไม่ได้ในอีกภาษาหนึ่ง
regionCode
รหัสภูมิภาคเป็นค่า รหัส CLDR 2 อักขระ ไม่มีค่าเริ่มต้น รหัส CLDR ส่วนใหญ่จะเหมือนกับรหัส ISO 3166-1
เมื่อเข้ารหัสพิกัดภูมิศาสตร์ของที่อยู่ การเข้ารหัสพิกัดภูมิศาสตร์แบบส่งต่อ พารามิเตอร์นี้จะส่งผลต่อผลลัพธ์จากบริการไปยังภูมิภาคที่ระบุ แต่จะไม่ จำกัดผลลัพธ์อย่างสมบูรณ์ เมื่อเข้ารหัสพิกัดภูมิศาสตร์ของสถานที่ตั้งหรือ สถานที่ การเข้ารหัสพิกัดภูมิศาสตร์แบบย้อนกลับหรือการเข้ารหัสพิกัดภูมิศาสตร์ของสถานที่ คุณสามารถใช้พารามิเตอร์นี้เพื่อ จัดรูปแบบที่อยู่ได้ ในทุกกรณี พารามิเตอร์นี้อาจส่งผลต่อผลลัพธ์ตามกฎหมายที่เกี่ยวข้อง
การปรับตำแหน่ง
ใช้พารามิเตอร์ locationBias เพื่อสั่งให้บริการ Geocoding
เลือกผลลัพธ์ภายใน Viewport ที่ระบุ (แสดงเป็นกรอบล้อมรอบ)
พารามิเตอร์ locationBias จะกำหนดพิกัดละติจูด/ลองจิจูด
ของมุมตะวันตกเฉียงใต้และตะวันออกเฉียงเหนือของกรอบล้อมนี้
ตัวอย่างเช่น คำขอ Geocode สำหรับที่อยู่ "Washington" สามารถแสดงผลลัพธ์สำหรับวอชิงตัน ดี.ซี. และรัฐวอชิงตันของสหรัฐอเมริกาได้
https://geocode.googleapis.com/v4beta/geocode/address/Washington?key=API_KEY
คำตอบจะอยู่ในรูปแบบต่อไปนี้
{ "results": [ { "place": "//places.googleapis.com/places/ChIJW-T2Wt7Gt4kRKl2I1CJFUsI", "placeId": "ChIJW-T2Wt7Gt4kRKl2I1CJFUsI", "location": { "latitude": 38.9071923, "longitude": -77.0368707 }, "granularity": "APPROXIMATE", "viewport": { "low": { "latitude": 38.7916449, "longitude": -77.119759 }, "high": { "latitude": 38.9958641, "longitude": -76.909393 } }, "bounds": { "low": { "latitude": 38.7916449, "longitude": -77.119759 }, "high": { "latitude": 38.9958641, "longitude": -76.909393 } }, "formattedAddress": "Washington, DC, USA", "addressComponents": [ { "longText": "Washington", "shortText": "Washington", "types": [ "locality", "political" ], "languageCode": "en" }, ... ], "types": [ "locality", "political" ] }, { "place": "//places.googleapis.com/places/ChIJ-bDD5__lhVQRuvNfbGh4QpQ", "placeId": "ChIJ-bDD5__lhVQRuvNfbGh4QpQ", "location": { "latitude": 47.7510741, "longitude": -120.7401386 }, "granularity": "APPROXIMATE", "viewport": { "low": { "latitude": 45.543541, "longitude": -124.84897389999999 }, "high": { "latitude": 49.0024945, "longitude": -116.91607109999998 } }, "bounds": { "low": { "latitude": 45.543541, "longitude": -124.84897389999999 }, "high": { "latitude": 49.0024442, "longitude": -116.91607109999998 } }, "formattedAddress": "Washington, USA", "addressComponents": [ { "longText": "Washington", "shortText": "WA", "types": [ "administrative_area_level_1", "political" ], "languageCode": "en" }, ... ], "types": [ "administrative_area_level_1", "political" ] } ] }
อย่างไรก็ตาม การเพิ่มพารามิเตอร์ locationBias ที่กำหนดกรอบล้อมรอบ
ส่วนตะวันออกเฉียงเหนือของสหรัฐอเมริกาจะทำให้รหัสพิกัดภูมิศาสตร์นี้แสดงเฉพาะเมือง
วอชิงตัน ดี.ซี.
https://geocode.googleapis.com/v4beta/geocode/address/Washington?locationBias.rectangle.low.latitude=36.47&locationBias.rectangle.low.longitude=-84.72 &locationBias.rectangle.high.latitude=43.39 &locationBias.rectangle.high.longitude=-65.90 &key=API_KEY
การให้น้ำหนักภูมิภาค
ในคำขอเข้ารหัสพิกัดภูมิศาสตร์ คุณสามารถสั่งให้บริการเข้ารหัสพิกัดภูมิศาสตร์แสดงผลลัพธ์ที่เอนเอียงไปยังภูมิภาคใดภูมิภาคหนึ่งได้โดยใช้พารามิเตอร์ regionCode
พารามิเตอร์นี้ใช้ค่า
รหัส CLDR แบบ 2 อักขระที่ระบุการเอนเอียงของภูมิภาค รหัส CLDR ส่วนใหญ่
จะเหมือนกับรหัส ISO 3166-1
regionCode ไม่มีค่าเริ่มต้น ตัวอย่างเช่น รหัสพิกัดภูมิศาสตร์สำหรับ "Toledo"
จะแสดงผลลัพธ์สำหรับสหรัฐอเมริกาและสเปน
https://geocode.googleapis.com/v4beta/geocode/address/Toledo?key=API_KEY
คำตอบ:
{ "results": [ { "place": "//places.googleapis.com/places/ChIJeU4e_C2HO4gRRcM6RZ_IPHw", "placeId": "ChIJeU4e_C2HO4gRRcM6RZ_IPHw", "location": { "latitude": 41.652805199999996, "longitude": -83.5378674 }, "granularity": "APPROXIMATE", "viewport": { "low": { "latitude": 41.579513, "longitude": -83.6944089 }, "high": { "latitude": 41.733036, "longitude": -83.4493851 } }, "bounds": { "low": { "latitude": 41.579513, "longitude": -83.6944089 }, "high": { "latitude": 41.733036, "longitude": -83.4493851 } }, "formattedAddress": "Toledo, OH, USA", "addressComponents": [ { "longText": "Toledo", "shortText": "Toledo", "types": [ "locality", "political" ], "languageCode": "en" }, ... ], "types": [ "locality", "political" ] }, { "place": "//places.googleapis.com/places/ChIJkwyrlqwLag0RiQIn2fdIshM", "placeId": "ChIJkwyrlqwLag0RiQIn2fdIshM", "location": { "latitude": 39.8628296, "longitude": -4.0273067 }, "granularity": "APPROXIMATE", "viewport": { "low": { "latitude": 39.8116682, "longitude": -4.179933 }, "high": { "latitude": 39.9251319, "longitude": -3.8148935 } }, "bounds": { "low": { "latitude": 39.8116682, "longitude": -4.179933 }, "high": { "latitude": 39.9251319, "longitude": -3.8148935 } }, "formattedAddress": "Toledo, España", "addressComponents": [ { "longText": "Toledo", "shortText": "Toledo", "types": [ "administrative_area_level_4", "political" ], "languageCode": "es" }, ... ], "types": [ "administrative_area_level_4", "political" ] }, ... ] }
คำขอ Geocoding สำหรับ "Toledo" ที่มี regionCode=es (สเปน) จะแสดงผลลัพธ์จากสเปนเท่านั้น ดังนี้
https://geocode.googleapis.com/v4beta/geocode/address/Toledo?regionCode=es&key=API_KEY