1

私はC++プログラマーなので、Javaスクリプトの次の未定義の変数エラーは私には奇妙です。グローバル変数を定義しましdirectionResultた。次のコードはその値を初期化します。

function calcRoute() {
    var iMap = {
        departure:"tiran,esfahan",
        destination:"esfahan"
    }
    var request = {
        origin : iMap.departure,
        destination : iMap.destination,
        travelMode : google.maps.TravelMode.DRIVING
    };
    directionsService.route(request, function(result, status) {
        if (status == google.maps.DirectionsStatus.OK) {
            directionsDisplay.setDirections(result);
            document.getElementById("log").innerHTML = result.routes[0];
            directionResult = result;
        }
    });
}

最後に、コールバック関数のパラメータであるifdirectionResultに等しくなります。resultしかし、別の関数では:

function showSteps() {
    var myRoute = directionResult.routes[0].legs[0];
    var point = myRoute.steps[index].start_point;
    var inst = myRoute.steps[index++].instructions;
    obj.setPosition(point);
    document.getElementById('inst').innerHTML = inst;
    map.panTo(point);
    if (index >= myRoute.steps.length)
        clearInterval(timer);
} 

最初の行で使用したいときdirectionResult、私はこのエラーに遭遇します:

TypeError:directionResultは未定義です

どうすればこの奇妙な振る舞いを解決できますか?ありがとうございます。

4

1 に答える 1

0

directionResult が定義されていない理由として考えられるのは、設定される前に参照しようとしている可能性があります。showSteps() 関数は calcRoute() 関数の後に表示されますが、directionResult は、(おそらく) AJAX 要求の後に発生するdirectionService.route() コールバックが起動されるまで設定されません。

代わりに、directionService.route() コールバック関数内から showSteps() を呼び出してみてください。

于 2012-09-01T05:57:24.817 に答える