2011-03-19 95 views
12

默认情况下,我有一个V3地图加载并以特定的经度/纬度为中心。一旦加载,用户可以输入他们的地址来获得该点的方向。发生这种情况时,地图会调整大小以容纳左侧的方向框。因此,地图窗口中的路线偏离中心。我尝试了下面的代码,我认为这应该在逻辑上起作用,但无济于事。在路线经过路线之后在路线上居中V3谷歌地图

新实现:如果我以任何方式调整窗口的大小,它会开始按预期工作。

发现问题:我在调整地图容器大小后需要触发google.maps.event.trigger(map, 'resize')

directionsService.route(query, function(result,status) { 
    if (status === google.maps.DirectionsStatus.OK) { 
     // This sets the directions container to display:block and resizes the map 
     document.getElementById('map-container').className = "directions"; 
     directions.setDirections(result); 
     var bounds = result.routes[0].bounds; 
     map.fitBounds(bounds); 
     map.setCenter(bounds.getCenter()); 
    } else { 
     alert(""); 
    } 
});
+0

一旦你打电话fitBounds它应该基于LatLngBounds为基础,所以你不应该需要setCenter – kjy112 2011-03-19 23:01:41

+0

是的,我在最后努力添加setCenter()。它不会像预期的那样集中或不集中。 – Justin 2011-03-19 23:11:35

+0

完全误读了“调整大小”地图部分。很高兴它成功了 – kjy112 2011-03-20 00:16:15

回答

1

你已经找到了我要说的答案。无论何时您更改地图容器(或可能是其父项),调整大小事件都非常重要。就我而言,我在两个标签(地图和驾车路线)之间翻转。起初,地图将在地图标签中正确显示,但切换到方向并返回到地图会导致显示效果变差。

如果您的地图仅显示一个角落中的小瓦片(在我的情况左上角),其余的空白机会是您需要触发调整大小触发器。