2010-06-09 24 views
2

與谷歌Web工具包(與谷歌地圖擴展)工作我有一個小問題:問題與GWT的TabPanel和谷歌地圖

我想插入一個谷歌地圖爲TabLayoutPanel。沒有那個TabLayoutPanel一切正常。但是,只要地圖位於選項卡內部,它的行爲就非常奇怪(它不是居中的權利,當您嘗試滾動時會「跳躍」)。

同樣的問題是,當使用TabPanel而不是TabLayoutPanel。從我的代碼

提取物:

在onModuleLoad

- 我的入口點類的方法:

DockLayoutPanel mainPanel; 
    MainUITabs tabWidget = new MainUITabs(); 
    mainPanel.add(tabWidget); 
    RootLayoutPanel.get().add(mainPanel); 

的MainUITabsWiget看上去只有這樣的:

public class MainUITabs extends Composite { 

public MainUITabs(){ 
    TabLayoutPanel tabPanel = new TabLayoutPanel(10, Unit.PCT); 

    MapWidget googleMapsTab = buildMapWidget(); 

    tabPanel.add(googleMapsTab, "Google Maps"); 

    initWidget(tabPanel); 
} 

private MapWidget buildMapWidget() { 

    LatLng coord = LatLng.newInstance(51.509, 11.434); 
    final MapWidget map = new MapWidget(coord, 2); 
    map.setSize("600px", "300px"); 
    map.setCenter(coord); 

    map.addControl(new LargeMapControl()); 

    map.addOverlay(new Marker(coord)); 

    return map; 
} 

}

好像像地圖不喜歡在一個標籤內..任何人都有一個想法在哪裏他的問題可能是?

謝謝。

安迪

+0

更新:問題只存在,如果我不首先添加地圖。因爲我想在第二個或第三個標籤上顯示地圖,問題仍然存在。 – andy 2010-06-09 15:00:38

回答

0

TabPanel docs說,「這個小工具將怪癖模式的工作。如果你的應用是在標準模式下,使用TabLayoutPanel來代替。」

因此,如果您的頁面有DOCTYPE,因此處於標準模式,則表明您會遇到問題。

我發現當在標準模式下使用TabPanel時,第一個標籤(它們一開始不可見)之後的標籤上的小部件並不總是正確呈現。解決方法是在顯示選項卡時使用SelectionHandler.onSelection呈現這些元素,如已棄用的方法TabPanel#onTabSelected的文檔中所述。但是閱讀上面引用的那一點,這可能會帶來麻煩,而在標準模式下,您應該使用TabLayoutPanel。

0

乍一看,這看起來像一個問題,我與整合TinyMCE的(WYSIWYG編輯器)與GWT - 在這種情況下,它發生 - 通常,像這些組件時的DOM變化不喜歡當你切換標籤(在我的情況下,它拖動&下降)。
IIRC,解決方案是在屏幕上未顯示TinyMCE小部件的文本字段中刪除TinyMCE小部件。在你的情況下,你想從tabPanel中刪除MapWidget,,但它沒有顯示。我對Google Maps API不夠熟悉,不知道是否有指定的方法來做到這一點,但您可以嘗試一個簡單的tabPanel.remove(googleMapsTab);