2011-03-19 115 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

你已經找到了我要說的答案。無論何時您更改地圖容器(或可能是其父項),調整大小事件都非常重要。就我而言,我在兩個標籤(地圖和駕車路線)之間翻轉。起初,地圖將在地圖標籤中正確顯示,但切換到方向並返回到地圖會導致顯示效果變差。

如果您的地圖僅顯示一個角落中的小瓦片(在我的情況左上角),其餘的空白機會是您需要觸發調整大小觸發器。