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!