Tối ưu hoá việc sử dụng hạn mức khi mã hoá địa lý

Mã hoá địa lý là quá trình chuyển đổi địa chỉ ("1600 Amphitheatre Parkway, Mountain View, CA") đến toạ độ địa lý (37.423021, -122.083739), mà bạn có thể sử dụng để đặt điểm đánh dấu hoặc định vị bản đồ. API Nền tảng Google Maps cung cấp hai phương pháp mã hoá địa lý:

  • Mã hóa địa lý phía máy khách, lệnh này được thực thi trong trình duyệt, thường là trong phản hồi hành động của người dùng. API JavaScript của Maps cung cấp các lớp đưa ra yêu cầu cho bạn. Phương pháp này được mô tả trong API JavaScript của Maps .
  • Mã hóa địa lý phía máy chủ HTTP, cho phép máy chủ của bạn truy vấn trực tiếp Các máy chủ của Google để mã hoá địa lý. API mã hoá địa lý là môi trường web cung cấp chức năng này. Thông thường, bạn tích hợp tính năng này dịch vụ với mã khác đang chạy phía máy chủ. Mã hoá địa lý phía máy chủ được mô tả trong API mã hoá địa lý .

Ví dụ về mã hoá địa lý phía máy khách và phía máy chủ

Dưới đây là mẫu mã hóa địa lý phía máy khách sẽ lấy của địa chỉ đó, mã hoá địa lý địa lý đó, di chuyển trung tâm của bản đồ đến vị trí đó và thêm điểm đánh dấu bản đồ ở đó:

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
    });
  }
});

Để biết thêm ví dụ, hãy xem API JavaScript của Maps .

Sau đây là một ví dụ sử dụng Python để thực hiện phía máy chủ mã hoá địa lý:

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()

Thao tác này sẽ tạo ra một đối tượng JSON có nội dung sau:

{
  "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
        }
      }
    }
  } ]
}

Bộ mã hoá địa lý phía máy chủ cũng cung cấp định dạng XML thay thế cho JSON. Để biết thêm ví dụ, hãy xem API mã hoá địa lý thư viện ứng dụng cho Python và các ngôn ngữ khác.

Những điều cần cân nhắc về hạn mức và chi phí

Chi phí, hạn mức và giới hạn số lần yêu cầu mã hóa địa lý thúc đẩy các chiến lược được nêu trong tài liệu.

Chi phí

Google không còn sử dụng các giới hạn hạn mức mỗi ngày (QPD) cho các yêu cầu mã hóa địa lý nữa. Thay vào đó, mỗi yêu cầu mã hoá địa lý, cho dù từ phía máy khách thông qua trình duyệt hay phía máy chủ thông qua Dịch vụ web API mã hoá địa lý là tính phí theo từng mức giá. Để quản lý chi phí sử dụng, hãy cân nhắc giới hạn hạn mức hằng ngày.

Giới hạn số lượng yêu cầu

Dịch vụ mã hóa địa lý có tỷ lệ giới hạn ở 3.000 QPM (truy vấn mỗi phút), được tính bằng tổng số truy vấn phía máy khách và phía máy chủ.

Khi chạy yêu cầu mã hoá địa lý phía máy khách theo các khoảng thời gian định kỳ, chẳng hạn như trong một ứng dụng di động, yêu cầu của bạn có thể trả về lỗi nếu tất cả người dùng của bạn thực hiện các yêu cầu cùng một lúc (ví dụ: tất cả cùng một giây trong mỗi phút). Để tránh điều này, hãy cân nhắc một trong các cách sau:

  • Đưa khoảng thời gian ngẫu nhiên vào yêu cầu của bạn (dao động). Đảm bảo yêu cầu là ngẫu nhiên trên toàn bộ cơ sở người dùng của bạn.
  • Nếu đang phát triển cho Android, hãy sử dụng đoạn mã không chính xác lặp lại chuông báo.
  • Nếu phát triển ứng dụng cho Android, hãy chọn một vị trí thích hợp .

Lưu vào bộ nhớ đệm

Xem Chính sách về API mã hoá địa lý về việc lưu vào bộ nhớ đệm.

Khi nào sử dụng mã hóa địa lý phía máy khách

Câu trả lời ngắn gọn là "hầu như luôn luôn". Lý do là:

  • Phản hồi và yêu cầu phía máy khách cung cấp trải nghiệm nhanh hơn, hiệu quả hơn mang tính tương tác cao hơn cho người dùng.
  • Yêu cầu phía máy khách có thể bao gồm thông tin cải thiện mã hoá địa lý chất lượng: ngôn ngữ người dùng, khu vực và khung nhìn.

Cụ thể, mã hoá địa lý phía máy khách tốt nhất khi mã hoá địa lý địa chỉ dựa trên thông tin đầu vào từ người dùng.

Có hai cấu trúc cơ bản để mã hoá địa lý phía máy khách:

  • Thực hiện mã hóa địa lý và hiển thị hoàn toàn trong trình duyệt. Ví dụ: người dùng nhập địa chỉ trên trang của bạn. Ứng dụng của bạn mã hoá địa lý ứng dụng đó. Sau đó trang của bạn sử dụng mã địa lý để tạo điểm đánh dấu trên bản đồ. Hoặc ứng dụng của bạn một số phân tích đơn giản bằng cách sử dụng mã địa lý. Không có dữ liệu nào được gửi đến máy chủ của bạn. Điều này làm giảm tải trên máy chủ của bạn.
  • Thực hiện mã hoá địa lý trong trình duyệt rồi gửi đến máy chủ. Ví dụ: người dùng nhập địa chỉ trên trang của bạn. Đơn đăng ký của bạn mã hoá địa lý bản sao đó trong trình duyệt. Sau đó, ứng dụng này sẽ gửi dữ liệu này đến máy chủ của bạn. Chiến lược phát hành đĩa đơn máy chủ phản hồi bằng một số dữ liệu, chẳng hạn như các địa điểm yêu thích lân cận. Chiến dịch này cho phép bạn tuỳ chỉnh câu trả lời dựa trên dữ liệu của riêng mình.

Khi nào sử dụng mã hoá địa lý phía máy chủ

Mã hoá địa lý phía máy chủ được sử dụng tốt nhất cho các ứng dụng yêu cầu bạn mã hoá địa lý các địa chỉ mà không cần dữ liệu đầu vào từ khách hàng. Một ví dụ phổ biến là khi bạn nhận được một tập dữ liệu độc lập với thông tin đầu vào của người dùng, Chẳng hạn như bạn có một tập hợp các giá trị cố định, hữu hạn và đã biết các địa chỉ cần mã hoá địa lý. Mã hoá địa lý phía máy chủ có thể cũng có thể hữu ích như một bản sao lưu khi mã hoá địa lý phía máy khách không thành công.

Một số mối lo ngại có thể xảy ra là việc tăng độ trễ một cách không cần thiết cho người dùng, và kết quả mã hoá địa lý có chất lượng thấp hơn phía máy khách vì có ít có thông tin trong yêu cầu.