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

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

Patricia Arquette
Patricia Arquette원래의
2024-11-02 22:50:02316검색

How to Prevent the Google Maps API OVER_QUERY_LIMIT Error in v3?

Google Maps API v3에서 OVER_QUERY_LIMIT 오류를 처리하는 방법

소개:

Google Maps API v3에서 다음을 수행할 수 있습니다. 짧은 기간에 너무 많은 지오코딩 요청을 하면 OVER_QUERY_LIMIT 오류가 발생합니다. 이 오류를 방지하려면 요청 사이에 지연 메커니즘을 구현해야 합니다.

JavaScript 구현:

지오코딩 호출 사이에 일시 중지를 도입하려면 다음 JavaScript를 사용할 수 있습니다. 코드:

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

이 코드는 기존 지연을 확인하고, OVER_QUERY_LIMIT 오류가 발생하면 새 지연을 설정하고, 지오코딩을 재개하기 전에 지연이 완료될 때까지 기다립니다.

예:

제공된 코드에서 기존 codeAddress 함수를 업데이트된 버전으로 대체할 수 있습니다.

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

이 수정으로 인해 OVER_QUERY_LIMIT 오류를 방지하는 데 필요한 지연이 발생합니다.

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

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