Google Maps API v3에서 OVER_QUERY_LIMIT를 방지하기 위해 쿼리 속도를 늦추기
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()을 사용하여 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 포트의 다음 코드 조각은 지연 구현을 보여줍니다.
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