2012-10-04 36 views
0

我試圖檢索使用的GoogleMaps geocoder..but IAM只得到幾個地址..as我看到我的JavaScript失敗後10 addresses..below取回的地址是我的代碼的setTimeout避免over_query限制

function fetchData(lat,lng,type){ 

    $('#placedata').empty(); 
    myLatlng = new google.maps.LatLng(parseFloat(lat), parseFloat(lng)); 
    map = new google.maps.Map(document.getElementById('map'), { 
        mapTypeId: google.maps.MapTypeId.ROADMAP, 
        center: myLatlng, 
        zoom: 10}); 
    var request = {location: myLatlng,radius: 50000,types: [type]}; 
    var service = new google.maps.places.PlacesService(map); 
    service.search(request, callback); 
    } 

    function callback(results, status) { 

     for (var i = 0; i < results.length; i++) { 
     if (status == google.maps.places.PlacesServiceStatus.OK) { 
      createMarker(results[i]);  
     }  
    } 
    } 

    function createMarker(place) { 
    place.geometry.location}); 

    var request = {reference: place.reference,}; 
    service = new google.maps.places.PlacesService(map); 
    service.getDetails(request, detailsDisplay); 

    function detailsDisplay(details, status) {  
     $('#placedata').append('<tr><td><a href='+details.url+'>'+details.name+'</a></td></tr>'); 

    } 

} 

,我看到很多有同樣的問題..是有辦法或使用setTimeout函數和延遲的要求,所以我得到得到ATLEAST 20 addresses..Any幫助將是appreciated..thankyou

+0

'OVER_QUERY_LIMIT'是網頁已超過其請求限額,根據地圖API庫25.000。當你得到這第十條記錄時,可能會發生一些錯誤。你在'callback()'函數中檢查了'status'嗎? –

+0

警報聲明是給出所有20個結果..如何檢查狀態 – hari86

+0

哪個提醒你說? –

回答

4

的解決方案是使用setTimeout以防止OVER_QUERY_LIMIT

function createMarker(place) { 
    //var placeLoc = place.geometry.location; 
    //var marker = new google.maps.Marker({map: map,zIndex: 100,position: place.geometry.location}); 

    var request = { 
     reference : place.reference, 
    }; 

    service = new google.maps.places.PlacesService(map); 

    service.getDetails(request, function(details, status) { 
     if (status === google.maps.places.PlacesServiceStatus.OK) { 
      $('#placedata').append('<tr><td><a href='+details.url+'>' + details.name + '</a></td></tr>'); 
     } else if (status === google.maps.GeocoderStatus.OVER_QUERY_LIMIT) { 
      setTimeout(function() { 
       createMarker(place); 
      }, 200); 
     } 
    }); 
} 
+0

嗨..如果結果超過20 ...有問題我可以得到的結果,但無法顯示超過20 – hari86

+0

顯示超過20哪裏? –

+0

你能來聊天我可以告訴你嗎? – hari86

-1

我有解決方案。

試試這個

if(pagination.hasNextPage){ 
pagination.nextPage(); 
} 

if(pagination.b == null){ 
createMarker(place); 
} 

//無需setTimeout的。嘗試這個。這對你有幫助。

+0

小心解釋什麼是分頁,以及你在哪裏得到這個變量?原來的帖子,沒有提到它。 –

+0

分頁是Google地圖位置服務中的回調函數Api service.nearbySearch(request,function(results,status,pagination){ – user2501037