3

使用 gwt-maps-3.8.0 我在 gwt 弹出窗口中显示路线。调用一次时有效,但第二次调用时无效。

我应该怎么做......刷新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 或窗口调整大小的情况如下:

    /*
     * 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 回答