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

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

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

import json
import urllib.request

address = "1600+Amphitheatre+Parkway,+Mountain+View,+CA"
key = "my-key-here"
url = f"https://geocode.googleapis.com/v4/geocode/address/{address}"
headers = {"X-Goog-Api-Key": key}

req = urllib.request.Request(url, headers=headers)
with urllib.request.urlopen(req) as response:
    result = json.loads(response.read().decode("utf-8"))

ซึ่งจะสร้างออบเจ็กต์ JSON ที่มีเนื้อหาต่อไปนี้

{
  "results": [
    {
      "place": "places/ChIJiSSC8QK6j4AR98Thup8mqTc",
      "placeId": "ChIJiSSC8QK6j4AR98Thup8mqTc",
      "location": {
        "latitude": 37.4224864,
        "longitude": -122.0855962
      },
      "granularity": "ROOFTOP",
      "viewport": {
        "low": {
          "latitude": 37.4211700197085,
          "longitude": -122.08691558029149
        },
        "high": {
          "latitude": 37.4238679802915,
          "longitude": -122.08421761970851
        }
      },
      "bounds": {
        "low": {
          "latitude": 37.4221145,
          "longitude": -122.0860002
        },
        "high": {
          "latitude": 37.4228775,
          "longitude": -122.085133
        }
      },
      "formattedAddress": "Google Building 41, 1600 Amphitheatre Pkwy, Mountain View, CA 94043, USA",
      "postalAddress": {
        "regionCode": "US",
        "languageCode": "en",
        "postalCode": "94043-1351",
        "administrativeArea": "CA",
        "locality": "Mountain View",
        "addressLines": [
          "1600 Amphitheatre Pkwy"
        ]
      },
      "addressComponents": [
        {
          "longText": "Google Building 41",
          "shortText": "Google Building 41",
          "types": [
            "premise"
          ],
          "languageCode": "en"
        },
        {
          "longText": "1600",
          "shortText": "1600",
          "types": [
            "street_number"
          ]
        },
        {
          "longText": "Amphitheatre Parkway",
          "shortText": "Amphitheatre Pkwy",
          "types": [
            "route"
          ],
          "languageCode": "en"
        },
        {
          "longText": "Mountain View",
          "shortText": "Mountain View",
          "types": [
            "locality",
            "political"
          ],
          "languageCode": "en"
        },
        {
          "longText": "Santa Clara County",
          "shortText": "Santa Clara County",
          "types": [
            "administrative_area_level_2",
            "political"
          ],
          "languageCode": "en"
        },
        {
          "longText": "California",
          "shortText": "CA",
          "types": [
            "administrative_area_level_1",
            "political"
          ],
          "languageCode": "en"
        },
        {
          "longText": "United States",
          "shortText": "US",
          "types": [
            "country",
            "political"
          ],
          "languageCode": "en"
        },
        {
          "longText": "94043",
          "shortText": "94043",
          "types": [
            "postal_code"
          ]
        },
        {
          "longText": "1351",
          "shortText": "1351",
          "types": [
            "postal_code_suffix"
          ]
        }
      ],
      "types": [
        "premise",
        "street_address"
      ]
    }
  ]
}

ดูตัวอย่างเพิ่มเติมได้ที่ภาพรวมของ Geocoding API v4 และคู่มือการเข้ารหัสพิกัดภูมิศาสตร์ของที่อยู่

ข้อควรพิจารณาเกี่ยวกับโควต้าและค่าใช้จ่าย

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

ค่าใช้จ่าย

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

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

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

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

กำลังแคช

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

สถาปัตยกรรมฝั่งเซิร์ฟเวอร์เทียบกับฝั่งไคลเอ็นต์ใน v4

Geocoding API v4 (รวมถึง SearchDestinations, GeocodeAddress, GeocodeLocation และ GeocodePlace) ได้รับการออกแบบมาเป็น API แบบเซิร์ฟเวอร์ต่อเซิร์ฟเวอร์ การเรียกใช้ปลายทาง v4 จากเซิร์ฟเวอร์แบ็กเอนด์มีข้อดีที่สำคัญดังนี้

  • ข้อมูลอัจฉริยะเกี่ยวกับการมาถึงแบบเจาะจงเฉพาะพื้นที่: เมธอด SearchDestinations (POST /v4/geocode/destinations) พร้อมใช้งานโดยใช้คำขอ REST หรือ gRPC ฝั่งเซิร์ฟเวอร์เท่านั้น และจะแสดงผลทางเข้าอาคาร จุดนำทางที่กำหนดเส้นทางได้ โครงร่างอาคาร และจุดสังเกตใกล้เคียงที่ไม่มีในโปรแกรมเปลี่ยนที่อยู่เป็นพิกัดภูมิศาสตร์ของเบราว์เซอร์ฝั่งไคลเอ็นต์
  • ความปลอดภัยของ API ที่ดียิ่งขึ้น: การเรียกฝั่งเซิร์ฟเวอร์จะช่วยปกป้องคีย์ API และโทเค็น OAuth ไม่ให้เปิดเผยในเบราว์เซอร์ของไคลเอ็นต์ ดูความปลอดภัยของ API
  • มาสก์ช่องการตอบกลับ: ปลายทาง v4 ฝั่งเซิร์ฟเวอร์รองรับมาสก์ช่อง ซึ่งช่วยให้คุณขอเฉพาะช่องที่แอปพลิเคชันต้องการเพื่อลดขนาดเพย์โหลดและเวลาในการตอบสนองได้

กรณีที่ควรใช้การค้นหาเบราว์เซอร์ฝั่งไคลเอ็นต์

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