DirectionsService.route()在回调中使用新的Map和setMap()中断setPanel()?

时间:2009-11-12 09:15:31

标签: javascript google-maps

使用V3 Google Maps API,我遇到的情况是,为.setMap()创建地图似乎会导致.setPanel()无法执行任何操作。最终目标是让地图加载一次。如果我在路线呼叫之前创建地图,一切正常。但我首先看到创建Map时加载的地图,然后.route回调导致地图第二次加载。我想消除第一次加载或最小化时间间隔。这是有效的片段:

  map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
  directionsService.route(parms, function(result, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      directionsDisplay.setMap(map);
      directionsDisplay.setDirections(result);
      directionsDisplay.setPanel(document.getElementById("textlist"));
    }
  });

这是破碎的:

  directionsService.route(parms, function(result, status) {
    if (status == google.maps.DirectionsStatus.OK) {
      map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
      directionsDisplay.setMap(map);
      directionsDisplay.setDirections(result);
      directionsDisplay.setPanel(document.getElementById("textlist"));
    }
  });

2 个答案:

答案 0 :(得分:0)

您可能应该收听在DirectionsService.route()的回调中定义的新地图的加载事件。我认为在加载地图之前你无法渲染方向。所以新代码看起来像:

directionsService.route(parms,function(result,status){     if(status == google.maps.DirectionsStatus.OK){       map = new google.maps.Map(document.getElementById(“map_canvas”),myOptions);

  google.maps.event.addListener(map,'tilesloaded',function(){
      directionsDisplay.setMap(map);
      directionsDisplay.setDirections(result);
      directionsDisplay.setPanel(document.getElementById("textlist"));
  }
};

});

答案 1 :(得分:0)

您需要做的就是注释map map = new google.maps.Map(document.getElementById(“map_canvas”),myOptions); 它不会第一次加载。我在我的应用程序中尝试了同样的方法,它对我有用