我正在与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
答案 0 :(得分:1)
观察directions_changed
- 事件:
google.maps.event.addListener(directionsDisplay, 'directions_changed',function(){
if(this.get('directions')){
//directions are available, do something
}
});