2016-07-30 135 views
1

我有20個addcode加入地理編碼。他們都是有效的。當我嘗試對它們進行地理編碼時,我得到了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],我得到一個javascript錯誤,發佈的代碼是:'未捕獲的TypeError:無法讀取未定義的屬性'geocode',如果我解決了這個問題,我會在第一個之後得到'OVER_QUERY_LIMIT' 10位置離子,但沒有標記。對我來說意味着你有'initMap'和標記的地理編碼之間的競爭條件。 – geocodezip

+0

可能的重複[我如何在沒有收到OVER \ _QUERY \ _LIMIT響應的情況下獲得Geocode 20地址?](http://stackoverflow.com/questions/2419219/how-do-i-geocode-20-addresses-without-receiving -an-過查詢的極限響應) – yole

回答

1

你居然打在一次地理編碼20請求。 地理編碼器具有配額和速率限制。您可以在不觸及查詢限制的情況下對10個位置進行地理編碼(實際數量可能取決於服務器負載)。最好的解決辦法是延遲當你遇到OVER_QUERY_LIMIT錯誤,然後重試。事情是這樣的

$(項目)。每個(函數(I,項目){

的setTimeout(函數(){

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

},200);

}