我在使用google maps API v3的directionsService对象时遇到了一些问题。
markersArray是一个包含“google.Maps.Marker”对象的数组,我想计算它之间的距离。 但directionsService对象有时会返回“over_query_limit”错误或“unknown_error”,我不知道为什么,因为我考虑了限制时间(我在1秒钟内每2分暂停一次)
但最奇怪的是这个问题有时只会发生。有时,程序运行正常。
有人可以向我提出解决方案吗?
function calcRoute()
{
var start;
var end;
for (var i = 0 ; i < markersArray.length - 1 ; i++)
{
start = markersArray[i].getPosition();
for (var j = i+1 ; j < markersArray.length ; j++)
{
end = markersArray[j].getPosition();
addRoute(start,end,i,j);
addRoute(end,start,j,i);
sleep(1000);
}
}
}
function addRoute(start, end, i, j)
{
var summaryPannel;
var directionsService = new google.maps.DirectionsService();
var request =
{
origin: start,
destination: end,
travelMode: google.maps.DirectionsTravelMode.DRIVING,
optimizeWaypoints: true
};
directionsService.route(request, function(response, status)
{
summaryPanel.innerHTML += status + "<br />";
if (status == google.maps.DirectionsStatus.OK)
{
summaryPanel.innerHTML += (i+1) + " " + (j+1) + "<br/>";
}
});
}
答案 0 :(得分:1)
Google Directions服务受配额和费率限制的约束,这些限制不是固定的,取决于服务器的加载。如果您有时获得over_query_limit结果,那么您需要延长固定延迟时间或动态调整请求(当发生这种情况时,请以更长的延迟重试请求)。
如果您需要的只是距离,也许您可以使用Distance Service