我正在使用Google Map JavaScript API的Directionservice。实际上我无法在地图中显示超过10条路线。如果我试图显示超过10条路线,那么它会抛出OVER_QUERY_LIMIT错误。 即使设置了setTimeout函数后也无法显示所有路由。我只使用20条路线在地图上显示,而不能显示这20条路线。但是如果我使用setInterval函数,那么我就可以看到所有路由,但是也无法使用clearInterval函数停止间隔,因此它将进入无限循环。
function buildRoute(from, to, fromId, toId, index) {
setTimeout(function() {
var directionsService = new google.maps.DirectionsService();
var color = setColor(index);
var rendererOptions = {
map: myMap,
suppressMarkers: true,
polylineOptions: {
strokeColor: color
}
};
var directionsRequest = {
origin: from,
destination: to,
travelMode: getTraveMode(),
unitSystem: google.maps.UnitSystem.METRIC
};
directionsService.route(directionsRequest, function(response, status) {
count = count + 1;
console.log(count + " " + fromId + " " + toId);
if (status != google.maps.DirectionsStatus.OK)
console.log(status);
if (status == google.maps.DirectionsStatus.OK) {
counter = counter + 1;
var directionsDisplay = new google.maps.DirectionsRenderer(
rendererOptions);
directionsDisplay.setDirections(response);
custimiseDriection(response, fromId, toId, color);
if (counter == totRoutes) {
// clearInterval();
displayTimeandDistance();
}
}
})
}, 1000)
}
SetTimeout函数在下面的代码中的不同位置使用,如下所示,但无法克服OVER_QUERY_LIMIT。
以下是Chrome控制台中OVER_QUERY_LIMIT错误的屏幕截图。 OVER QUERY LIMIT Error
答案 0 :(得分:0)
创建客户端DirectionService以响应用户交互,这就是您的请求受到限制的原因 - 您不能指望JS Maps API库能够在突发中执行10个以上的请求。
如果您需要对多条路线进行分析,可以考虑使用服务器端路线服务,因为它的使用限制为documented,您可以启用结算以获得更高的配额。