第二次调用时,Google地图API未加载完整

时间:2014-03-26 09:29:59

标签: asp.net google-maps

我使用的是显示为对话框的Google地图,此控件会多次动态添加到页面中。现在,当我第一次打开地图时,它显示正常,我可以选择一个位置并使用它等。但是当我再次打开地图时,地图会部分显示在左上角。关于为什么会发生这种情况的任何帮助

function Initialize(id) {
    if (!map) {
        var Utrecht = new google.maps.LatLng(52.071065, 5.111389);
        var myOptions =
        {
            zoom: 8,
            center: Utrecht
            , mapTypeId: google.maps.MapTypeId.ROADMAP
            , draggableCursor: 'crosshair'
            , streetViewControl: false
            , panControl: false
        };
        var mapDiv = $('#ContentPlaceHolderBody_mapsCtrl' + id + '_map' + id);
        map = new google.maps.Map(mapDiv[0], myOptions);
    }
    else
    {
        google.maps.event.clearListeners(map);
    }
    google.maps.event.addListener(map, 'click', function (event) {
        position = event.latLng;
        CallServer('loc:' + event.latLng.toUrlValue(), "");
    });
}

编辑 - 这就是我用地图显示对话框的方式

 $('#ContentPlaceHolderBody_mapsCtrl' + id + '_mapDiv' + id).dialog({
            autoOpen: false,
            dialogClass: "no-close",
            position: {
                my: "center",
                at: "center",
                of: window
            },
            width: 800,
            height: 600,
            open: Initialize(id)

        });
    $('#ContentPlaceHolderBody_mapsCtrl' + id + '_mapDiv' + id).dialog("open");
    AutoResizeFrame();

1 个答案:

答案 0 :(得分:0)

在关闭对话框之前调用google.maps.event.clearListeners(window, 'resize');并在Initialize函数的else部分中工作,我现在正在全部显示地图。

else
{
    google.maps.event.clearListeners(map);
    google.maps.event.clearListeners(window, 'resize');
}