使用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"));
}
});
答案 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); 它不会第一次加载。我在我的应用程序中尝试了同样的方法,它对我有用