การเพิ่มประสิทธิภาพการใช้โควต้าเมื่อกำหนดพิกัดทางภูมิศาสตร์

การระบุพิกัดทางภูมิศาสตร์เป็นกระบวนการแปลงที่อยู่ ("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 (จำนวนคำค้นหาต่อนาที) ซึ่งคำนวณเป็นผลรวมของคำค้นหาจากฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์

เมื่อเรียกใช้คำขอการระบุพิกัดทางภูมิศาสตร์ฝั่งไคลเอ็นต์ในช่วงเวลาต่างๆ เช่น สำหรับในแอปบนอุปกรณ์เคลื่อนที่ คำขอของคุณอาจแสดงข้อผิดพลาดหากผู้ใช้ทั้งหมด การส่งคำขอพร้อมกัน (เช่น ทุกวินาทีเดียวกันของทุก นาที) เพื่อหลีกเลี่ยงปัญหานี้ โปรดพิจารณาข้อใดข้อหนึ่งต่อไปนี้

การแคช

โปรดดู นโยบาย Geocoding API เกี่ยวกับการแคช

กรณีที่ควรใช้การระบุพิกัดทางภูมิศาสตร์ฝั่งไคลเอ็นต์

คำตอบสั้นๆ คือ "เกือบทุกครั้ง" เหตุผลมีดังนี้

  • คำขอและการตอบกลับจากฝั่งไคลเอ็นต์ทำให้รวดเร็วและคล่องตัว แบบอินเทอร์แอกทีฟสำหรับผู้ใช้
  • คำขอจากฝั่งไคลเอ็นต์อาจมีข้อมูลที่ปรับปรุงการระบุพิกัดทางภูมิศาสตร์ คุณภาพ: ภาษาของผู้ใช้ ภูมิภาค และวิวพอร์ต

โดยเฉพาะอย่างยิ่ง การระบุพิกัดทางภูมิศาสตร์ฝั่งไคลเอ็นต์เป็นตัวเลือกที่ดีที่สุดเมื่อต้องการระบุพิกัดทางภูมิศาสตร์แก่ที่อยู่ ตามข้อมูลจากผู้ใช้

มีสถาปัตยกรรมพื้นฐาน 2 แบบสำหรับการระบุพิกัดทางภูมิศาสตร์ฝั่งไคลเอ็นต์ ได้แก่

  • เข้ารหัสพิกัดภูมิศาสตร์และการแสดงผลในเบราว์เซอร์ ตัวอย่างเช่น ผู้ใช้ป้อนที่อยู่ในหน้าเว็บของคุณ แอปพลิเคชันของคุณระบุพิกัดทางภูมิศาสตร์ จากนั้น หน้าเว็บของคุณใช้รหัสพิกัดภูมิศาสตร์เพื่อสร้างเครื่องหมายบนแผนที่ หรือแอปของคุณ การวิเคราะห์ง่ายๆ โดยใช้รหัสพิกัดภูมิศาสตร์ โดยจะไม่มีการส่งข้อมูลไปยังเซิร์ฟเวอร์ของคุณ ซึ่งจะช่วยลดโหลดบนเซิร์ฟเวอร์ของคุณ
  • เข้ารหัสพิกัดภูมิศาสตร์ในเบราว์เซอร์แล้วส่งไปยังเซิร์ฟเวอร์ ตัวอย่างเช่น ผู้ใช้ป้อนที่อยู่ในหน้าเว็บของคุณ การสมัครของคุณ เข้ารหัสพิกัดภูมิศาสตร์ในเบราว์เซอร์ จากนั้นแอปจะส่งข้อมูลไปยังเซิร์ฟเวอร์ของคุณ เซิร์ฟเวอร์ตอบกลับด้วยข้อมูลบางอย่าง เช่น จุดที่น่าสนใจที่อยู่ใกล้เคียง ช่วงเวลานี้ ช่วยให้คุณปรับแต่งคำตอบตามข้อมูลของคุณเองได้

เมื่อใดที่ควรใช้การระบุพิกัดทางภูมิศาสตร์ฝั่งเซิร์ฟเวอร์

การระบุพิกัดทางภูมิศาสตร์ฝั่งเซิร์ฟเวอร์เหมาะสำหรับแอปพลิเคชันที่ กำหนดให้คุณต้องระบุพิกัดทางภูมิศาสตร์ของที่อยู่โดยไม่มีอินพุตจากไคลเอ็นต์ ตัวอย่างที่พบบ่อย คือเมื่อคุณได้รับชุดข้อมูลโดยไม่ขึ้นอยู่กับอินพุตของผู้ใช้ ตัวอย่างเช่น คุณมีชุดแบบคงที่ จำกัด และชุดที่รู้จัก ที่อยู่ที่ต้องใช้การระบุพิกัดทางภูมิศาสตร์ การระบุพิกัดทางภูมิศาสตร์ฝั่งเซิร์ฟเวอร์สามารถ มีประโยชน์เป็นข้อมูลสำรองเมื่อการระบุพิกัดทางภูมิศาสตร์ฝั่งไคลเอ็นต์ล้มเหลว

ข้อกังวลที่เป็นไปได้บางอย่างคือ ผู้ใช้ต้องใช้เวลาในการตอบสนองเพิ่มขึ้นโดยไม่จำเป็น และผลลัพธ์การเข้ารหัสพิกัดภูมิศาสตร์จะมีคุณภาพน้อยกว่าฝั่งไคลเอ็นต์เนื่องจาก ที่มีอยู่ในคำขอ