2012-10-04 118 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

相关问题