Rumah >hujung hadapan web >tutorial js >Bagaimana untuk Mengelakkan OVER_QUERY_LIMIT Ralat dalam API Peta Google v3?

Bagaimana untuk Mengelakkan OVER_QUERY_LIMIT Ralat dalam API Peta Google v3?

Susan Sarandon
Susan Sarandonasal
2024-11-02 10:42:30980semak imbas

How to Avoid OVER_QUERY_LIMIT Errors in Google Maps API v3?

Memperlahankan Pertanyaan untuk Mengelak OVER_QUERY_LIMIT dalam Google Maps API v3

Apabila menggunakan Google Maps API v3, adalah penting untuk mengetahui setiap hari had pertanyaan dan had kadar. Melebihi had ini boleh mengakibatkan ralat OVER_QUERY_LIMIT. Untuk mengelakkan ini, adalah penting untuk melaksanakan kelewatan antara pertanyaan.

Melaksanakan Kelewatan dalam JavaScript

Satu pendekatan untuk melaksanakan kelewatan dalam JavaScript ialah melalui fungsi setTimeout(). Berikut ialah contoh:

<code class="javascript">function codeAddress(vPostCode) {
    if (geocoder) {
        setTimeout(function() {
            geocoder.geocode({ 'address': "'" + vPostCode + "'"}, function(results, status) {
                // Code for handling the geocoding result
            });
        }, 2000);
    }
}</code>

Dalam contoh ini, kelewatan 2 saat diperkenalkan menggunakan setTimeout() sebelum menghantar setiap permintaan geokod. Laraskan nilai kelewatan mengikut keperluan untuk memenuhi had kadar yang ditetapkan oleh API Peta Google.

Port Versi 3 Mike Williams

Mike Williams telah menyediakan port Versi 3 untuk tutorial asalnya yang berkesan mengendalikan kelewatan dan mengelakkan ralat OVER_QUERY_LIMIT. Port ini boleh didapati di sini:

http://acleach.me.uk/gmaps/v3/plotaddresses.htm

Kod Berkaitan daripada Port Versi 3 Mike Williams

Coretan kod berikut daripada port Versi 3 Mike Williams menggambarkan pelaksanaan kelewatan:

<code class="javascript">  function getAddress(search, next) {
    geo.geocode({address:search}, function (results,status)
      { 
        // If that was successful
        if (status == google.maps.GeocoderStatus.OK) {
          // Lets assume that the first marker is the one we want
          var p = results[0].geometry.location;
          var lat=p.lat();
          var lng=p.lng();
          // Output the data
            var msg = 'address="' + search + '" lat=' +lat+ ' lng=' +lng+ '(delay='+delay+'ms)<br>';
            document.getElementById("messages").innerHTML += msg;
          // Create a marker
          createMarker(search,lat,lng);
        }
        // ====== Decode the error status ======
        else {
          // === if we were sending the requests to fast, try this one again and increase the delay
          if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
            nextAddress--;
            delay++;
          } else {
            var reason="Code "+status;
            var msg = 'address="' + search + '" error=' +reason+ '(delay='+delay+'ms)<br>';
            document.getElementById("messages").innerHTML += msg;
          }   
        }
        next();
      }
    );
  }</code>

Kod ini melaksanakan mekanisme kelewatan dinamik. Jika ralat google.maps.GeocoderStatus.OVER_QUERY_LIMIT ditemui, kod melaraskan kelewatan antara permintaan dengan sewajarnya untuk mengelakkan ralat pada masa hadapan.

Atas ialah kandungan terperinci Bagaimana untuk Mengelakkan OVER_QUERY_LIMIT Ralat dalam API Peta Google v3?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn