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将等于resultwhich 是回调函数的参数。但在另一个功能中:

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在第一行使用时,我遇到了这个错误:

类型错误:directionResult 未定义

我该如何解决这种奇怪的行为?谢谢。

4

1 回答 1

0

directionResult 未定义的一个可能原因可能是因为您试图在设置它之前引用它。尽管您的 showSteps() 函数出现在 calcRoute() 函数之后,但没有设置方向结果,直到触发了方向服务.route() 回调,这发生在(可能)在 AJAX 请求之后。

尝试从 DirectionService.route() 回调函数中调用 showSteps()。

于 2012-09-01T05:57:24.817 回答