GWT选项卡面板和谷歌地图存在问题

GWT选项卡面板和谷歌地图存在问题,gwt,google-maps,tabpanel,Gwt,Google Maps,Tabpanel,使用Google Web Toolkit(使用Google地图扩展)时,我遇到了一个小问题: 我想在TabLayoutPanel中插入谷歌地图。没有那张桌子,一切都很好。但是,一旦地图位于选项卡内,它的行为就会非常奇怪(它没有居中,当您尝试滚动时会“跳跃”) 使用TabPanel而不是TabLayoutPanel时也存在同样的问题 从我的代码中摘录: 在我的EntryPoint类的onModuleLoad-方法中: DockLayoutPanel mainPanel; MainU

使用Google Web Toolkit(使用Google地图扩展)时,我遇到了一个小问题:

我想在TabLayoutPanel中插入谷歌地图。没有那张桌子,一切都很好。但是,一旦地图位于选项卡内,它的行为就会非常奇怪(它没有居中,当您尝试滚动时会“跳跃”)

使用TabPanel而不是TabLayoutPanel时也存在同样的问题

从我的代码中摘录:

在我的EntryPoint类的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;
}
}

似乎地图不喜欢在标签内..有人知道问题出在哪里吗

谢谢


Andy

乍一看,这似乎是我在将TinyMCE(WYSIWYG编辑器)与GWT集成时遇到的一个问题-通常,这样的组件不喜欢DOM更改-在这种情况下,切换选项卡时会发生这种情况(在我的情况下是拖放)。

IIRC的解决方案是,当TinyMCE小部件没有显示在屏幕上时,将其从环绕的文本字段中删除。在您的情况下,您可能希望从tabPanel中删除MapWidget,而它没有显示出来。我对GoogleMapsAPI不太熟悉,不知道是否有指定的方法可以实现这一点,但您可以尝试一个简单的
tabPanel.remove(googleMapsTab)

乍一看,这似乎是我在将TinyMCE(WYSIWYG编辑器)与GWT集成时遇到的一个问题—通常,这样的组件不喜欢DOM更改—在这种情况下,切换选项卡时会发生这种情况(在我的情况下是拖放)。
IIRC的解决方案是,当TinyMCE小部件没有显示在屏幕上时,将其从环绕的文本字段中删除。在您的情况下,您可能希望从tabPanel中删除MapWidget,而它没有显示出来。我对GoogleMapsAPI不太熟悉,不知道是否有指定的方法可以实现这一点,但您可以尝试一个简单的
tabPanel.remove(googleMapsTab)

说明“此小部件仅在怪癖模式下工作。如果您的应用程序处于标准模式,请改用TabLayoutPanel。”

因此,如果您的页面具有DOCTYPE,因此处于标准模式,则表明您将遇到问题

我发现在标准模式下使用TabPanel时,第一个选项卡之后的选项卡上的小部件(一开始不可见)并不总是正确呈现。解决方法是在显示选项卡时使用SelectionHandler.onSelection呈现这些元素,如不推荐使用的方法
TabPanel\onTabSelected
的文档中所述。但是阅读我上面引用的部分,这可能是自找麻烦,在标准模式下,你应该改用TabLayoutPanel。

他们说“这个小部件只能在怪癖模式下工作。如果你的应用程序处于标准模式,就改用TabLayoutPanel。”

因此,如果您的页面具有DOCTYPE,因此处于标准模式,则表明您将遇到问题


我发现在标准模式下使用TabPanel时,第一个选项卡之后的选项卡上的小部件(一开始不可见)并不总是正确呈现。解决方法是在显示选项卡时使用SelectionHandler.onSelection呈现这些元素,如不推荐使用的方法
TabPanel\onTabSelected
的文档中所述。但是阅读我上面引用的部分,这可能会带来麻烦,在标准模式下,您应该使用TabLayoutPanel。

update:问题只存在于我不首先添加地图的情况下。因为我想在第二个或第三个选项卡上添加地图,所以问题仍然存在……更新:问题只存在,如果我不首先添加地图的话。因为我想在第二个或第三个选项卡上显示地图,所以问题仍然存在。。。