gwt-maps-3.8.0 を使用して、ルートを gwt ポップアップに表示します。1 回呼び出すと機能しますが、2 回目の呼び出しでは機能しません。
どうすればいいですか... mapWidgetを更新するためのアドバイスはありますか?
gwt-maps-3.8.0 を使用して、ルートを gwt ポップアップに表示します。1 回呼び出すと機能しますが、2 回目の呼び出しでは機能しません。
どうすればいいですか... mapWidgetを更新するためのアドバイスはありますか?
resize
マップを表示するときに、そのイベントをトリガーします。
ドキュメントから:
開発者は、div のサイズが変更されたときにマップ上でこのイベントをトリガーする必要があります。
google.maps.event.trigger(map, 'resize')
GWTでこれを行う方法は
Event.trigger(mapWidget.getMap(), "resize");
現時点では、API に関する限り、マップのサイズはゼロであるため、(0,0) の単一ピクセルの周囲にタイルのバッファーを表示しているだけです。イベントをトリガーするresize
と、API がブラウザーから正しいサイズを取得するため、正しいタイルが表示用にフェッチされます。
私は同じ問題を抱えていました(ポップアップにマップが表示されます。ポップアップをリロードすると、マップが中央に配置されなくなりました)。
最後に、GoogleMap クラスの triggerResize メソッドを使用して問題を解決することができました。ただし、 Idle イベントからこのメソッドをトリガーした後にのみ機能しました。
triggerResize は、正しいタイルを表示するようにマップに通知します。
setCenter は、マップが再び中央に配置されるようにします。
gMap.addIdleListenerOnce(new IdleHandler() {
@Override
public void handle() {
gMap.triggerResize();
gMap.setCenter(myLatLng);
}
});
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!");
}
});