使用gwt-maps-3.8.0我在gwt弹出窗口中显示一条路线。调用一次但无法在第二次调用时工作。
我该怎么办...刷新mapWidget的一些建议?
答案 0 :(得分:5)
显示地图时,触发其resize
事件。
来自文档:
当div更改大小时,开发人员应在地图上触发此事件:
google.maps.event.trigger(map, 'resize')
在GWT中执行此操作的方式是{{3}
Event.trigger(mapWidget.getMap(), "resize");
目前,就API而言,地图的大小为零,因此它只是在(0,0)处的单个像素周围显示平铺缓冲区。触发resize
事件会导致API从浏览器中获取正确的大小,以便获取正确的图块以供显示。
答案 1 :(得分:2)
我有同样的问题(地图显示在弹出窗口中;重新加载弹出窗口,地图不再居中)。
最后,我设法使用GoogleMap类中的triggerResize方法修复了我的问题。但是,只有在我从Idle事件触发此方法后才能工作。
triggerResize将通知地图以显示正确的图块
setCenter将确保地图再次居中。
gMap.addIdleListenerOnce(new IdleHandler() {
@Override
public void handle() {
gMap.triggerResize();
gMap.setCenter(myLatLng);
}
});
答案 2 :(得分:1)
使用GWT-V3-Maps-API对于div或窗口调整大小的情况,将按如下方式进行:
/*
* 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!");
}
});