การระบุพิกัดทางภูมิศาสตร์เป็นกระบวนการแปลงที่อยู่ ("1600 Amphitheatre Parkway, Mountain View, CA") ไปยังพิกัดทางภูมิศาสตร์ (37.423021, -122.083739) ที่ใช้วางได้ เครื่องหมายหรือระบุตำแหน่งแผนที่ Google Maps Platform API มี วิธีเข้ารหัสพิกัดภูมิศาสตร์:
- การระบุพิกัดทางภูมิศาสตร์ฝั่งไคลเอ็นต์ ซึ่งจะดำเนินการในเบราว์เซอร์ โดยทั่วไปใน การตอบสนองต่อการดำเนินการของผู้ใช้ Maps JavaScript API มี ที่ส่งคำขอให้คุณ วิธีการนี้อธิบายอยู่ใน Maps JavaScript API เอกสารประกอบ
- การระบุพิกัดทางภูมิศาสตร์ฝั่งเซิร์ฟเวอร์ของ HTTP ซึ่งทำให้เซิร์ฟเวอร์ของคุณค้นหา เซิร์ฟเวอร์ของ Google สำหรับรหัสพิกัดภูมิศาสตร์ Geocoding API คือเว็บ ที่มีฟังก์ชันการทำงานนี้ โดยปกติแล้วคุณผสานรวม ด้วยโค้ดอื่นที่ทำงานในฝั่งเซิร์ฟเวอร์ การระบุพิกัดทางภูมิศาสตร์ฝั่งเซิร์ฟเวอร์ ตามที่อธิบายไว้ใน API การระบุพิกัดทางภูมิศาสตร์ เอกสารประกอบ
ตัวอย่างของการระบุพิกัดทางภูมิศาสตร์ฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์
ต่อไปนี้เป็นตัวอย่างของการระบุพิกัดทางภูมิศาสตร์ฝั่งไคลเอ็นต์ซึ่งใช้ เข้ารหัสพิกัดภูมิศาสตร์ ย้ายศูนย์กลางของแผนที่ไปยังตำแหน่งนั้น และเพิ่ม เครื่องหมายบนแผนที่ที่นั่น:
geocoder = new google.maps.Geocoder(); geocoder.geocode({ 'address': address }, function(results, status) { if (status == google.maps.GeocoderStatus.OK) { map.setCenter(results[0].geometry.location); var marker = new google.maps.Marker({ map: map, position: results[0].geometry.location }); } });
ดูตัวอย่างเพิ่มเติมได้ที่ Maps JavaScript API เอกสารประกอบ
ต่อไปนี้เป็นตัวอย่างที่ใช้ Python ในการดำเนินการฝั่งเซิร์ฟเวอร์ การเข้ารหัสพิกัดภูมิศาสตร์
import urllib2 address="1600+Amphitheatre+Parkway,+Mountain+View,+CA" key="my-key-here" url="https://maps.googleapis.com/maps/api/geocode/json?address=%s&key=%s" % (address, key) response = urllib2.urlopen(url) jsongeocode = response.read()
ซึ่งจะสร้างออบเจ็กต์ JSON ที่มีเนื้อหาต่อไปนี้
{ "status": "OK", "results": [ { "types": street_address, "formatted_address": "1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA", "address_components": [ { "long_name": "1600", "short_name": "1600", "types": street_number }, { "long_name": "Amphitheatre Pkwy", "short_name": "Amphitheatre Pkwy", "types": route }, { "long_name": "Mountain View", "short_name": "Mountain View", "types": [ "locality", "political" ] }, { "long_name": "San Jose", "short_name": "San Jose", "types": [ "administrative_area_level_3", "political" ] }, { "long_name": "Santa Clara", "short_name": "Santa Clara", "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" ] }, { "long_name": "94043", "short_name": "94043", "types": postal_code } ], "geometry": { "location": { "lat": 37.4220323, "lng": -122.0845109 }, "location_type": "ROOFTOP", "viewport": { "southwest": { "lat": 37.4188847, "lng": -122.0876585 }, "northeast": { "lat": 37.4251799, "lng": -122.0813633 } } } } ] }
โปรแกรมเข้ารหัสพิกัดภูมิศาสตร์ฝั่งเซิร์ฟเวอร์มีรูปแบบ XML เป็นทางเลือกสำหรับ JSON ดูตัวอย่างเพิ่มเติมได้ที่ API การระบุพิกัดทางภูมิศาสตร์ เอกสารและ ไลบรารีของไคลเอ็นต์สำหรับ Python และภาษาอื่นๆ
ข้อควรพิจารณาเกี่ยวกับโควต้าและค่าใช้จ่าย
ค่าใช้จ่ายเกี่ยวกับการระบุพิกัดทางภูมิศาสตร์ โควต้า และขีดจำกัดอัตราจะช่วยขับเคลื่อนกลยุทธ์ที่ระบุไว้ในบทความนี้ เอกสาร
ค่าใช้จ่าย
เราไม่ได้ใช้ขีดจำกัดโควต้าต่อวัน (QPD) แล้วสำหรับคำขอเข้ารหัสพิกัดภูมิศาสตร์ แต่คำขอการระบุพิกัดทางภูมิศาสตร์แต่ละรายการ ไม่ว่าจะเป็นฝั่งไคลเอ็นต์ทางเบราว์เซอร์หรือฝั่งเซิร์ฟเวอร์ผ่าน บริการเว็บ Geocoding API คือ ที่เรียกเก็บตามราคาต่อตัว หากต้องการจัดการต้นทุนในการใช้งาน โปรดพิจารณา การจำกัดโควต้ารายวันของคุณ
ขีดจำกัดอัตรา
บริการระบุพิกัดทางภูมิศาสตร์จำกัดอัตราอยู่ที่ 3,000 QPM (จำนวนคำค้นหาต่อนาที) ซึ่งคำนวณเป็นผลรวมของคำค้นหาจากฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์
เมื่อเรียกใช้คำขอการระบุพิกัดทางภูมิศาสตร์ฝั่งไคลเอ็นต์ในช่วงเวลาต่างๆ เช่น สำหรับในแอปบนอุปกรณ์เคลื่อนที่ คำขอของคุณอาจแสดงข้อผิดพลาดหากผู้ใช้ทั้งหมด การส่งคำขอพร้อมกัน (เช่น ทุกวินาทีเดียวกันของทุก นาที) เพื่อหลีกเลี่ยงปัญหานี้ โปรดพิจารณาข้อใดข้อหนึ่งต่อไปนี้
- แสดงช่วงเวลาแบบสุ่มในคำขอ (Jitter) ตรวจสอบคำขอ จะสุ่มจากฐานผู้ใช้ทั้งหมดของคุณ
- หากจะพัฒนาสำหรับ Android ให้ใช้ ตั้งปลุกซ้ำ
- หากจะพัฒนาสำหรับ Android ให้เลือกตำแหน่งที่เหมาะสม กลยุทธ์
การแคช
โปรดดู นโยบาย Geocoding API เกี่ยวกับการแคช
กรณีที่ควรใช้การระบุพิกัดทางภูมิศาสตร์ฝั่งไคลเอ็นต์
คำตอบสั้นๆ คือ "เกือบทุกครั้ง" เหตุผลมีดังนี้
- คำขอและการตอบกลับจากฝั่งไคลเอ็นต์ทำให้รวดเร็วและคล่องตัว แบบอินเทอร์แอกทีฟสำหรับผู้ใช้
- คำขอจากฝั่งไคลเอ็นต์อาจมีข้อมูลที่ปรับปรุงการระบุพิกัดทางภูมิศาสตร์ คุณภาพ: ภาษาของผู้ใช้ ภูมิภาค และวิวพอร์ต
โดยเฉพาะอย่างยิ่ง การระบุพิกัดทางภูมิศาสตร์ฝั่งไคลเอ็นต์เป็นตัวเลือกที่ดีที่สุดเมื่อต้องการระบุพิกัดทางภูมิศาสตร์แก่ที่อยู่ ตามข้อมูลจากผู้ใช้
มีสถาปัตยกรรมพื้นฐาน 2 แบบสำหรับการระบุพิกัดทางภูมิศาสตร์ฝั่งไคลเอ็นต์ ได้แก่
- เข้ารหัสพิกัดภูมิศาสตร์และการแสดงผลในเบราว์เซอร์ ตัวอย่างเช่น ผู้ใช้ป้อนที่อยู่ในหน้าเว็บของคุณ แอปพลิเคชันของคุณระบุพิกัดทางภูมิศาสตร์ จากนั้น หน้าเว็บของคุณใช้รหัสพิกัดภูมิศาสตร์เพื่อสร้างเครื่องหมายบนแผนที่ หรือแอปของคุณ การวิเคราะห์ง่ายๆ โดยใช้รหัสพิกัดภูมิศาสตร์ โดยจะไม่มีการส่งข้อมูลไปยังเซิร์ฟเวอร์ของคุณ ซึ่งจะช่วยลดโหลดบนเซิร์ฟเวอร์ของคุณ
- เข้ารหัสพิกัดภูมิศาสตร์ในเบราว์เซอร์แล้วส่งไปยังเซิร์ฟเวอร์ ตัวอย่างเช่น ผู้ใช้ป้อนที่อยู่ในหน้าเว็บของคุณ การสมัครของคุณ เข้ารหัสพิกัดภูมิศาสตร์ในเบราว์เซอร์ จากนั้นแอปจะส่งข้อมูลไปยังเซิร์ฟเวอร์ของคุณ เซิร์ฟเวอร์ตอบกลับด้วยข้อมูลบางอย่าง เช่น จุดที่น่าสนใจที่อยู่ใกล้เคียง ช่วงเวลานี้ ช่วยให้คุณปรับแต่งคำตอบตามข้อมูลของคุณเองได้
เมื่อใดที่ควรใช้การระบุพิกัดทางภูมิศาสตร์ฝั่งเซิร์ฟเวอร์
การระบุพิกัดทางภูมิศาสตร์ฝั่งเซิร์ฟเวอร์เหมาะสำหรับแอปพลิเคชันที่ กำหนดให้คุณต้องระบุพิกัดทางภูมิศาสตร์ของที่อยู่โดยไม่มีอินพุตจากไคลเอ็นต์ ตัวอย่างที่พบบ่อย คือเมื่อคุณได้รับชุดข้อมูลโดยไม่ขึ้นอยู่กับอินพุตของผู้ใช้ ตัวอย่างเช่น คุณมีชุดแบบคงที่ จำกัด และชุดที่รู้จัก ที่อยู่ที่ต้องใช้การระบุพิกัดทางภูมิศาสตร์ การระบุพิกัดทางภูมิศาสตร์ฝั่งเซิร์ฟเวอร์สามารถ มีประโยชน์เป็นข้อมูลสำรองเมื่อการระบุพิกัดทางภูมิศาสตร์ฝั่งไคลเอ็นต์ล้มเหลว
ข้อกังวลที่เป็นไปได้บางอย่างคือ ผู้ใช้ต้องใช้เวลาในการตอบสนองเพิ่มขึ้นโดยไม่จำเป็น และผลลัพธ์การเข้ารหัสพิกัดภูมิศาสตร์จะมีคุณภาพน้อยกว่าฝั่งไคลเอ็นต์เนื่องจาก ที่มีอยู่ในคำขอ