Rumah  >  Artikel  >  hujung hadapan web  >  Bagaimana untuk Menghalang API Peta Google OVER_QUERY_LIMIT Ralat dalam v3?

Bagaimana untuk Menghalang API Peta Google OVER_QUERY_LIMIT Ralat dalam v3?

Patricia Arquette
Patricia Arquetteasal
2024-11-02 22:50:02316semak imbas

How to Prevent the Google Maps API OVER_QUERY_LIMIT Error in v3?

Cara Menangani OVER_QUERY_LIMIT Ralat dalam Google Maps API v3

Pengenalan:

Dalam Google Maps API v3, anda boleh menghadapi ralat OVER_QUERY_LIMIT apabila membuat terlalu banyak permintaan geokod dalam tempoh yang singkat. Untuk mengelakkan ralat ini, adalah perlu untuk melaksanakan mekanisme kelewatan antara permintaan.

Pelaksanaan JavaScript:

Untuk memperkenalkan jeda antara panggilan geokod, anda boleh menggunakan JavaScript berikut kod:

<code class="javascript">function codeAddress(vPostCode) {
  if (geocoder) {
    // If there's an existing delay, wait for it to finish
    while (wait) {
      /* Just wait. */
    }

    geocoder.geocode({ 'address': "'" + vPostCode + "'"}, 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
        });
      } else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) {
        wait = true;
        setTimeout(function() {
          wait = false;
        }, 2000); // Set a delay of 2000 milliseconds
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }
}</code>

Kod ini menyemak kelewatan sedia ada, menetapkan kelewatan baharu jika ralat OVER_QUERY_LIMIT berlaku dan menunggu kelewatan selesai sebelum menyambung semula geokod.

Contoh:

Dalam kod yang anda berikan, anda boleh menggantikan fungsi codeAddress sedia ada dengan versi yang dikemas kini:

<code class="javascript">function codeAddress(vPostCode) {
  if (geocoder) {
    while (wait) { /* Just wait. */ };

    geocoder.geocode( { 'address': "'" + vPostCode + "'"}, 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
        });
      } else if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT) { 
        wait = true;
        setTimeout(function() {
          wait = false;
        }, 2000);
      } else {
        alert("Geocode was not successful for the following reason: " + status);
      }
    });
  }
}</code>

Pengubahsuaian ini akan memperkenalkan kelewatan yang diperlukan untuk mengelakkan ralat OVER_QUERY_LIMIT.

Atas ialah kandungan terperinci Bagaimana untuk Menghalang API Peta Google OVER_QUERY_LIMIT Ralat dalam 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