"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف تتجنب الأخطاء OVER_QUERY_LIMIT في Google Maps API v3؟

كيف تتجنب الأخطاء OVER_QUERY_LIMIT في Google Maps API v3؟

تم النشر بتاريخ 2024-11-12
تصفح:661

How to Avoid OVER_QUERY_LIMIT Errors in Google Maps API v3?

إبطاء الاستعلامات لتجنب 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.htm
http://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