使用 gwt-maps-3.8.0 我在 gwt 弹出窗口中显示路线。调用一次时有效,但第二次调用时无效。
我应该怎么做......刷新mapWidget的一些建议?
使用 gwt-maps-3.8.0 我在 gwt 弹出窗口中显示路线。调用一次时有效,但第二次调用时无效。
我应该怎么做......刷新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 或窗口调整大小的情况如下:
/*
* 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!");
}
});