I am using google maps to draw the path among various location which are stored in database.
While passing 15 geopoints(anything more than 10) am getting status as OVER_QUERY_LIMIT.
I understand that we need to give some milliseconds of time gap when we pass more than 10 geopoints per seconds.
My question is HOW TO DO THAT..Where to add sleep() or setTimeout() or any other time delay code
I've tried all,maximum all possibilities provided at SO but failed.As because they are just saying give some time gap between request but how to do that?
Code Snippet:
var markers = [
{
"title": 'abc',
"lat": '17.5061925',
"lng": '78.5049901',
"description": '1'
},
{
"title": 'abc',
"lat": '17.50165',
"lng": '78.5139204',
"description": '2'
},
.
.
.
.
.
{
"title": 'abc',
"lat": '17.4166067',
"lng": '78.4853992',
"description": '15'
}
];
var map;
var mapOptions = {
center: new google.maps.LatLng(markers[0].lat, markers[0].lng),
zoom: 15 ,
mapTypeId: google.maps.MapTypeId.ROADMAP
};
var path = new google.maps.MVCArray();
var service = new google.maps.DirectionsService();
var infoWindow = new google.maps.InfoWindow();
var map = new google.maps.Map(document.getElementById("map"), mapOptions);
var poly = new google.maps.Polyline({
map: map,
strokeColor: '#000000'
});
var lat_lng = new Array();
for (var i = 0; i <= markers.length-1; i++)
{
var src = new google.maps.LatLng(markers[i].lat, markers[i].lng);
var des = new google.maps.LatLng(markers[i+1].lat, markers[i+1].lng);
poly.setPath(path);
service.route({
origin: src,
destination: des,
travelMode: google.maps.DirectionsTravelMode.DRIVING
},
function (result, status)
{
if (status == google.maps.DirectionsStatus.OK)
{
for (var i = 0, len = result.routes[0].overview_path.length;
i < len; i++)
{
path.push(result.routes[0].overview_path[i]);
}
}
else{
if (status == google.maps.GeocoderStatus.OVER_QUERY_LIMIT)
{
document.getElementById('status').innerHTML +="request failed:"+status+"<br>";
}
}
});
}
});
RESULT MAP(OVER_QUERY_LIMIT):