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

จัดทุกอย่างให้เป็นระเบียบอยู่เสมอด้วยคอลเล็กชัน บันทึกและจัดหมวดหมู่เนื้อหาตามค่ากำหนดของคุณ

การเข้ารหัสพิกัดคือกระบวนการแปลงที่อยู่ ("1600 Amphitheatre Parkway, Mountain View, CA") เป็นพิกัดทางภูมิศาสตร์ (37.423021, -122.083739) ซึ่งคุณใช้เพื่อวาง เครื่องหมายหรือวางตําแหน่งแผนที่ได้ Google Maps Platform API มี 2 วิธีดังนี้

  • การเข้ารหัสฝั่งไคลเอ็นต์ ซึ่งดําเนินการในเบราว์เซอร์ โดยทั่วไปจะตอบสนองต่อการดําเนินการของผู้ใช้ Maps JavaScript API มีคลาสที่ส่งคําขอสําหรับคุณ วิธีการนี้มีการอธิบายไว้ในเอกสารประกอบ Maps JavaScript API
  • การเข้ารหัสพิกัดฝั่งเซิร์ฟเวอร์ฝั่งเซิร์ฟเวอร์ของ HTTP ซึ่งช่วยให้เซิร์ฟเวอร์ของคุณค้นหาเซิร์ฟเวอร์พิกัดทางภูมิศาสตร์ของ Google&#39 ได้โดยตรง Geocoding API เป็นบริการบนเว็บที่มีฟังก์ชันการทํางานนี้ โดยปกติแล้ว คุณจะผสานรวมบริการนี้กับโค้ดอื่นๆ ที่เรียกใช้ฝั่งเซิร์ฟเวอร์ การระบุพิกัดฝั่งเซิร์ฟเวอร์ฝั่งเซิร์ฟเวอร์อธิบายไว้ในเอกสารประกอบของ Geocoding 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 ได้ด้วย ดูตัวอย่างเพิ่มเติมได้ที่เอกสารประกอบของ Geocoding API และไลบรารีของไคลเอ็นต์สําหรับ Python และภาษาอื่นๆ

การพิจารณาโควต้าและค่าใช้จ่าย

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

ราคา

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

ขีดจำกัดอัตรา

บริการการเข้ารหัสภูมิศาสตร์จํากัดอัตราไว้ที่ 50 QPS (จํานวนคําค้นหาต่อวินาที) โดยคํานวณเป็นผลรวมของคําค้นหาฝั่งไคลเอ็นต์และฝั่งเซิร์ฟเวอร์

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

  • แนะนําช่วงเวลาแบบสุ่มให้กับคําขอของคุณ (Jitter) โปรดตรวจสอบว่าคําขอแบบสุ่มอยู่ในฐานผู้ใช้ทั้งหมด
  • หากเป็นการพัฒนาสําหรับ Android ให้ใช้การปลุกซ้ําแบบไม่จํากัด
  • หากพัฒนาซอฟต์แวร์สําหรับ Android ให้เลือกกลยุทธ์ตําแหน่งที่เหมาะสม

การแคช

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

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

คําตอบสั้นๆ คือ &;quot;เกือบจะตลอดเวลาเลย" โดยมีสาเหตุดังนี้

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

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

สถาปัตยกรรมพื้นฐานสําหรับการเข้ารหัสฝั่งไคลเอ็นต์มีสถาปัตยกรรมพื้นฐาน 2 แบบดังนี้

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

กรณีที่ควรใช้การระบุพิกัดฝั่งเซิร์ฟเวอร์

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

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