0

我对谷歌地图 API v3 的方向服务对象有一些问题。

markerArray 是一个包含“google.Maps.Marker”对象的数组,我想计算它之间的距离。但是directionsService对象有时会返回“over_query_limit”错误或“unknown_error”,我不知道为什么,因为我考虑了限制时间(我每2点暂停1秒)

但最奇怪的是,这个问题只是偶尔发生。有时,程序运行正确。

谁能给我一个解决方案?

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/>";            
        }
    });
}
4

1 回答 1

1

Google 路线服务受配额和速率限制的限制,这些限制不是固定的,取决于服务器的负载。如果您有时会得到 over_query_limit 结果,那么您需要延长固定延迟或动态限制请求(发生这种情况时以更长的延迟重试请求)。

如果您只需要距离,也许您可​​以使用DistanceMatrix 服务

于 2012-08-18T15:12:15.860 回答