>웹 프론트엔드 >JS 튜토리얼 >Google Maps API v3에서 OVER_QUERY_LIMIT 오류를 방지하는 방법은 무엇입니까?

Google Maps API v3에서 OVER_QUERY_LIMIT 오류를 방지하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2024-11-02 10:42:30967검색

How to Avoid OVER_QUERY_LIMIT Errors in Google Maps API v3?

Google Maps API v3에서 OVER_QUERY_LIMIT를 방지하기 위해 쿼리 속도를 늦추기

Google Maps API v3을 사용할 때 매일 주의해야 할 사항 쿼리 제한 및 속도 제한. 이러한 제한을 초과하면 OVER_QUERY_LIMIT 오류가 발생할 수 있습니다. 이를 방지하려면 쿼리 간 지연을 구현하는 것이 중요합니다.

JavaScript에서 지연 구현

JavaScript에서 지연을 구현하는 한 가지 접근 방식은 setTimeout() 함수를 사용하는 것입니다. 예는 다음과 같습니다.

<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>

이 예에서는 각 지오코딩 요청을 보내기 전에 setTimeout()을 사용하여 2초 지연이 도입되었습니다. Google Maps API에서 설정한 속도 제한을 충족하도록 필요에 따라 지연 값을 조정합니다.

Mike Williams의 버전 3 포트

Mike Williams는 버전 3 포트를 제공했습니다. 지연을 효과적으로 처리하고 OVER_QUERY_LIMIT 오류를 방지하는 그의 원래 튜토리얼입니다. 이 포트는 여기에서 찾을 수 있습니다:

http://acleach.me.uk/gmaps/v3/plotaddresses.htm

Mike Williams 버전 3 포트의 관련 코드

Mike Williams 버전 3 포트의 다음 코드 조각은 지연 구현:

<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>

이 코드는 동적 지연 메커니즘을 구현합니다. google.maps.GeocoderStatus.OVER_QUERY_LIMIT 오류가 발생하면 코드는 향후 오류를 방지하기 위해 그에 따라 요청 간의 지연을 조정합니다.

위 내용은 Google Maps API v3에서 OVER_QUERY_LIMIT 오류를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.