Google Maps API v3 DirectionsService

时间:2012-08-18 10:06:52

标签: google-maps google-maps-api-3

我在使用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/>";            
        }
    });
}

1 个答案:

答案 0 :(得分:1)

Google Directions服务受配额和费率限制的约束,这些限制不是固定的,取决于服务器的加载。如果您有时获得over_query_limit结果,那么您需要延长固定延迟时间或动态调整请求(当发生这种情况时,请以更长的延迟重试请求)。

如果您需要的只是距离,也许您可​​以使用Distance Service