إبطاء الاستعلامات لتجنب OVER_QUERY_LIMIT في Google Maps API v3
عند استخدام Google Maps API v3، من المهم أن تكون على دراية بالأحداث اليومية حد الاستعلام وحدود المعدل. يمكن أن يؤدي تجاوز هذه الحدود إلى حدوث خطأ OVER_QUERY_LIMIT. لتجنب ذلك، من الضروري تنفيذ التأخير بين الاستعلامات.
تنفيذ التأخير في JavaScript
أحد الأساليب لتنفيذ التأخير في JavaScript هو من خلال وظيفة setTimeout (). إليك مثال:
function codeAddress(vPostCode) {
if (geocoder) {
setTimeout(function() {
geocoder.geocode({ 'address': "'" vPostCode "'"}, function(results, status) {
// Code for handling the geocoding result
});
}, 2000);
}
}
في هذا المثال، يتم تقديم تأخير لمدة ثانيتين باستخدام setTimeout() قبل إرسال كل طلب ترميز جغرافي. اضبط قيمة التأخير حسب الحاجة للوفاء بحدود المعدل التي حددتها واجهة برمجة التطبيقات لخرائط Google.
منفذ الإصدار 3 من مايك ويليامز
قد قدم مايك ويليامز منفذ الإصدار 3 من برنامجه التعليمي الأصلي الذي يتعامل بشكل فعال مع التأخير ويتجنب الخطأ OVER_QUERY_LIMIT. يمكن العثور على هذا المنفذ هنا:http://acleach.me.uk/gmaps/v3/plotaddresses.htmhttp://acleach.me.uk/gmaps/v3/plotaddresses.htm
الكود ذو الصلة من الإصدار 3 من منفذ مايك ويليامز
يوضح مقتطف التعليمات البرمجية التالي من منفذ الإصدار 3 الخاص بـ Mike Williams تنفيذ التأخير:
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();
}
);
}
يطبق هذا الكود آلية تأخير ديناميكية. في حالة ظهور خطأ google.maps.GeocoderStatus.OVER_QUERY_LIMIT، يقوم الرمز بضبط التأخير بين الطلبات وفقًا لذلك لتجنب الأخطاء المستقبلية. تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3