2016-07-30 10 views
1

지오 코드에 20 개의 주소가 있습니다. 그들은 모두 유효합니다. 지오 코딩을 시도하면 OVER_QUERY_LIMIT가 표시됩니다. 또한지도에 마커를 넣고지도에 여러 개의 마커가 표시 될 때마다 이 OVER_QUERY_LIMIT in Google Maps을 찾았지만 도움이되지 않았습니다. 또한 geocodding 마커 배열 후 길이가 0과 나는 이유를 알지 못한다. 이 html 코드 :상태 코드 OVER_QUERY_LIMIT Google지도 API

<div class="address-list"> 
       <ul> 
        <li data-address='ТРЦ Квадрат, бульвар Перова, 36, Киев, город Киев'>ТРЦ Квадрат, бульвар Перова 36</li> 
        <li data-address='Дніпровська набережна, 33'> ТЦ Аркадия, Днепровская Набережная 33 </li> 
        <li data-address='Срібнокільська, 3г, Київ'> ТЦ ИнСилвьер, Срибнокольская 3г</li> 
        <li data-address="вулиця Лук'янівська, Київ"> ТЦ Квадрат, Белорусская 1</li> 
        <li data-address='проспект Генерала Ватутіна, 2, Київ, 02000'> ТЦ Скаймолл, проспект Генерала Ватутіна 2 </li> 
        <li data-address='вулиця Архітектора Вербицького 30а 30a, Київ, город Киев'> вулиця Архітектора Вербицького 30а</li> 
        <li data-address='Дніпровська набережна, 33, Київ, 02000'> Дніпровська набережна 33</li> 
        <li data-address='вулиця Михайла Гришка, 3а, Київ, 02000'> вулиця Михайла Гришка 3а</li> 
        <li data-address='вулиця Антоновича, 176, Київ, 03150'>ТРЦ Ocean Plaza, вулиця Антоновича 176</li> 
        <li data-address='вулиця Олександра Мишуги, 4, Київ'>ТЦ Пирамида, вулиця Олександра Мишуги 4</li> 
        <li data-address='вулиця Антоновича, 176, Київ, 03150'>ТРЦ Ocean Plaza, вулиця Антоновича 176</li>  
        <li data-address='вулиця Олександра Архипенка, 6, Київ, 02000'>вулиця Мате Залки 6, Сильпо</li> 
        <li data-address='Бессарабська площа, Київ, 02000'>ТЦ Метроград, вулиця Красноармейская 13</li> 
        <li data-address='Спортивна площа, 1a, Київ, 01023'>ТЦ Гулливер, Спортивная 1а</li> 
        <li data-address='Спортивна площа, 1a, Київ, 01023'>ТЦ Гулливер, Спортивная 1а</li> 
        <li data-address='площа Льва Толстого, Київ, 01004'> ТЦ "Метроград", пл. Льва Толстого</li> 
        <li data-address='Майдан Незалежності, 1, Київ'>Пл. Майдан Независимости 1, ТЦ Глобус</li> 
       </ul> 
      </div> 
      <div id="map"> 

      </div> 

이것은 JS 코드 :

var map; 
var markers=[]; 
var addreses=[]; 
var buf=[]; 
var geocoder; 
var delay = 100; 
var index = 0; 

function initMap() { 
    map = new google.maps.Map(document.getElementById("map"),{ 
     center: { lat: 50.448998, lng: 30.522364}, 
     zoom: 11  
    }); 
    geocoder = new google.maps.Geocoder(); 
} 

$(function(){ 
    buf = $('.address-list ul li'); 
    for(var i = 0; i < buf.length; i++){ 
     var data = $(buf[i]).data('address'); 
     addreses[i] = data; 
    } 

    nextAddress(); 

    $('.address-list ul li').hover(
     function(e){ 
      for (var i = 0; i < buf.length; i++){ 
       var addr = $(this).data('address'); 
       if(addreses[i] == addr){ 
        var pos = markers[i].getPosition(); 
        map.setCenter(pos); 
        break; 
       } 
      } 
     } 
    ); 
}); 

function geocodeAddress(addr, mark, next){ 
    geocoder.geocode({'address': addr}, function(results, status){ 
     if(status === google.maps.GeocoderStatus.OK){ 
      mark = new google.maps.Marker({ 
       map: map, 
       position: results[0].geometry.location 
      }); 
      mark = results[0].geometry.location; 
     }else{ 
      console.log('Error occured!' + status); 
      if(status === google.maps.GeocoderStatus.OVER_QUERY_LIMIT){ 
       index--; 
       delay++; 
      } 
     } 
     console.log(markers.length); 
     next(); 
    }); 
} 

function nextAddress(){ 
    if(index < addreses.length){ 
     setTimeout(geocodeAddress(addreses[index], markers[index], nextAddress), delay); 
     index++; 
    }else{ 
     console.log("Markers done!!!" + markers.length); 
    } 
} 
+1

문제를 설명하는 [mcve]를 제공하십시오. 게시 된 코드에 자바 스크립트 오류가 발생했습니다 : Uncaught TypeError : undefined의 'geocode'속성을 읽을 수 없습니다. 문제가 해결되면 첫 번째 인수 이후에 'OVER_QUERY_LIMIT'이 표시됩니다. 10 locat 이온, 마커는 없다. 내게 initMap과 마커의 지오 코딩 사이에 경쟁 조건이 있음을 말해 준다. – geocodezip

+0

[중복 된 \ _QUERY \ _LIMIT 응답을받지 않고 20 개의 주소를 어떻게 지오 코딩합니까?] (http://stackoverflow.com/questions/2419219/how-do-i-geocode-20-addresses-without-receiving -query-limit-response 이상) – yole

답변

1

당신은 실제로 지오 코딩 한 번에 20 요청을 타격한다. 지오 코더에는 할당량 및 속도 제한이 있습니다. 쿼리 제한을 두지 않고 10 개의 위치를 ​​지오 코딩 할 수 있습니다 (실제로 서버 로딩에 따라 다름). 가장 좋은 해결책은 OVER_QUERY_LIMIT 개의 오류가 발생하면 지연 한 다음 다시 시도하는 것입니다. 이

$ (항목) .each (기능 (전, 아이템 같은 것을) {

에서는 setTimeout (함수() {

geoLocate("address", function(myLatlng){ 
    ...value 
}); 

}, 200);

}