2

Google Web Toolkit(Google Maps Extensionを使用)での作業私は少し問題がありました:

GoogleマップをTabLayoutPanelに挿入したい。そのTabLayoutPanelがなければ、すべてが正常に機能しました。しかし、マップがタブ内に入るとすぐに、それは本当に奇妙な動作をします(右中央に配置されず、スクロールしようとすると「ジャンプ」します)。

同じ問題は、TabLayoutPanelの代わりにTabPanelを使用する場合です。

私のコードから抽出します:

onModuleLoad-私のEntryPointクラスのメソッド:

    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;
}

}

マップがタブ内にあることを好まないようです。問題がどこにあるのか誰かが知っていますか?

ありがとう。

アンディ

4

2 に答える 2

0

一見すると、これはTinyMCE(WYSIWYGエディター)をGWTと統合する際に発生した問題のように見えます-一般的に、このようなコンポーネントはDOMが変更されたときに気に入らない-この場合、タブを切り替えると発生します(私の場合はドラッグアンドドロップでした)。
IIRCの解決策は、画面に表示されていないときに折り返したテキストフィールドからTinyMCEウィジェットを削除することでした。あなたの場合、MapWidgetをtabPanelから削除したいのですが、表示されていません。Google Maps APIに精通していないため、指定された方法があるかどうかを知ることはできませんが、簡単な方法を試すことができますtabPanel.remove(googleMapsTab);

于 2010-06-09T17:31:41.333 に答える
0

TabPanelのドキュメントには、「このウィジェットはクァークズモードでのみ機能します。アプリケーションが標準モードの場合は、代わりにTabLayoutPanelを使用してください」と記載されています。

したがって、ページにDOCTYPEがあり、したがって標準モードになっている場合は、問題が発生している可能性があります。

標準モードでTabPanelを使用すると、最初のタブ(最初は表示されない)の後のタブのウィジェットが常に正しくレンダリングされるとは限らないことがわかりました。回避策は、非推奨のメソッドのドキュメントに記載されているように、SelectionHandler.onSelectionを使用して、タブが表示されたときにこれらの要素をレンダリングすることでしたTabPanel#onTabSelected。しかし、上で引用したビットを読むと、おそらく問題が発生しているので、標準モードでは代わりにTabLayoutPanelを使用する必要があります。

于 2010-06-09T18:02:03.857 に答える