Introduction :
Dans l'API Google Maps v3, vous pouvez rencontrez l'erreur OVER_QUERY_LIMIT lorsque vous effectuez trop de demandes de géocodage sur une courte période. Pour éviter cette erreur, il est nécessaire d'implémenter un mécanisme de délai entre les requêtes.
Implémentation JavaScript :
Pour introduire une pause entre les appels de géocodage, vous pouvez utiliser le JavaScript suivant code :
<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>
Ce code vérifie les délais existants, définit un nouveau délai si l'erreur OVER_QUERY_LIMIT se produit et attend la fin du délai avant de reprendre le géocodage.
Exemple :
Dans le code fourni, vous pouvez remplacer la fonction codeAddress existante par la version mise à jour :
<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>
Cette modification introduira les délais nécessaires pour éviter l'erreur OVER_QUERY_LIMIT.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!