谷歌地图的第二次调用不会显示正确大小的地图

时间:2012-07-17 20:24:25

标签: gwt google-maps-api-3

使用gwt-maps-3.8.0我在gwt弹出窗口中显示一条路线。调用一次但无法在第二次调用时工作。

我该怎么办...刷新mapWidget的一些建议? defect map

3 个答案:

答案 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!");
        }
    });