0

Google マップ API v3 の directionService オブジェクトに問題がありました。

マーカー配列は、「google.Maps.Marker」オブジェクトを含む配列であり、それらの間の距離を計算したいと考えています。しかし、directionService オブジェクトが「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 に答える