如何等待Direction Service完成访问Direction Display的Direction属性

时间:2014-03-15 12:32:41

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

我正在与Google Map API合作。要绘制两点之间的路线,我使用此函数:

function calcRoute(start, end) {
        var pStart = new google.maps.LatLng(start.lat(), start.lng());
        var pEnd = new google.maps.LatLng(end.lat(), end.lng());

        var request = {
            origin: pStart,
            destination: pEnd,
            travelMode: google.maps.TravelMode.DRIVING
        };
        directionsService.route(request, function(result, status) {
            if (status == google.maps.DirectionsStatus.OK) {
                directionsDisplay.setDirections(result);

                // Box the overview path of the first route
                var path = result.routes[0].overview_path;
                boxes = rboxer.box(path, distance);

                //drawBoxes(boxes);
                nearbyMarkets = search_market(boxes);
                // PUT HERE???
            }
        });
    }

在此之后,我需要访问Direction Display对象,该对象仅在路由成功呈现后才可用(表示此功能已完成)。我试图将该代码块置于该位置,但此时Direction property的{​​{1}}仍然不可用,因此失败了。但如果我在Direction Display函数之后调用它,那就没关系。

所以,我的问题是,我怎么知道回调完成的时间才能继续我的工作?我试过在下面放calcRoute,但是不成功,循环是无限的。

flag

1 个答案:

答案 0 :(得分:1)

观察directions_changed - 事件:

google.maps.event.addListener(directionsDisplay, 'directions_changed',function(){
 if(this.get('directions')){
   //directions are available, do something
 }
});