3

gwt-maps-3.8.0 を使用して、ルートを gwt ポップアップに表示します。1 回呼び出すと機能しますが、2 回目の呼び出しでは機能しません。

どうすればいいですか... mapWidgetを更新するためのアドバイスはありますか? 欠陥マップ

4

3 に答える 3

5

resizeマップを表示するときに、そのイベントをトリガーします。

ドキュメントから:

開発者は、div のサイズが変更されたときにマップ上でこのイベントをトリガーする必要があります。google.maps.event.trigger(map, 'resize')

GWTでこれを行う方法

Event.trigger(mapWidget.getMap(), "resize");

現時点では、API に関する限り、マップのサイズはゼロであるため、(0,0) の単一ピクセルの周囲にタイルのバッファーを表示しているだけです。イベントをトリガーするresizeと、API がブラウザーから正しいサイズを取得するため、正しいタイルが表示用にフェッチされます。

于 2012-07-17T23:23:40.300 に答える
2

私は同じ問題を抱えていました(ポップアップにマップが表示されます。ポップアップをリロードすると、マップが中央に配置されなくなりました)。
最後に、GoogleMap クラスの triggerResize メソッドを使用して問題を解決することができました。ただし、 Idle イベントからこのメソッドをトリガーした後にのみ機能しました。
triggerResize は、正しいタイルを表示するようにマップに通知します。
setCenter は、マップが再び中央に配置されるようにします。

gMap.addIdleListenerOnce(new IdleHandler() {
    @Override
    public void handle() {
        gMap.triggerResize();
        gMap.setCenter(myLatLng);
    }
});
于 2015-01-21T12:18:48.940 に答える
1

GWT-V3-Maps-APIを使用すると、divまたはwindowのサイズが変更された場合に次のように実行されます。

    /*
     * Example of how to dynamically resize the map to fit the window - add
     * your events
     */
    Window.addResizeHandler(new ResizeHandler() {
        @Override
        public void onResize(ResizeEvent event) {
            MapHandlerRegistration.trigger(mapWidget, MapEventType.RESIZE);
            GWT.log("Window has been resized!");
        }
    });

    mapWidget.addResizeHandler(new ResizeMapHandler() {
        @Override
        public void onEvent(ResizeMapEvent event) {
            GWT.log("Map has been resized!");
        }
    });
于 2012-08-21T11:48:28.400 に答える