编程语言
首页 > 编程语言> > C#-部分回发后未显示Google地图

C#-部分回发后未显示Google地图

作者:互联网

我在页面中有一个google map(使用Javascript API v3)

地图加载如下:

在Default.aspx页中:

(这是我要加载地图的div)
    
        
        
            
        
    

我正在使用的脚本:

<script src="http://maps.google.com/maps/api/js?sensor=false&" type="text/javascript </script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script type="text/javascript" src="Scripts/MapScript.js"></script>

MapScript.j文件包含用于加载地图的JavaScript代码以及我需要的所有其他内容(标记,动画,鼠标事件…)

在MapScript.js中,我使用此脚本加载地图

var map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);

“ MapScript.js”包含我在地图中使用的许多功能.

直到现在一切正常,地图已加载且所有功能均正常运行.

但是我想做的是:

我将地图放在“更新面板”中.

在后面的代码中

在页面加载时,看不到MapPanel

protected void Page_Load(object sender, EventArgs e)
{
    MapPanel.Visible = false;
}

只需单击一下按钮,我就会在更新面板上进行部分发布,并将地图的可见性更改为true.

但是问题在于部分回发后,地图停止显示.

我尝试使用RegisterStartupScript注册我正在使用的所有3个javascript源. (我将其放在PageLoad事件中)

string scr;
scr = "<script src='/Scripts/MapScript.js'></script>";
Page.ClientScript.RegisterStartupScript(Page.GetType(), "key", scr, false);

但这没有用.

任何帮助是极大的赞赏.希望我足够清楚.

非常感谢

解决方法:

您需要像这样在updatepanel的部分回发之后初始化地图.

<script>
var prm = Sys.WebForms.PageRequestManager.getInstance();    
prm.add_initializeRequest(InitializeRequest);
prm.add_endRequest(EndRequest);

function InitializeRequest(sender, args) {      
}

// fires after the partial update of UpdatePanel
function EndRequest(sender, args) {
    LoadMap();
}

var map = null;
function LoadMap()
{
    map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
}
</script>

如果不使用ajax显示未加载的地图,则也可以动态加载javascript.这是一个示例,我仅加载一个js.修改它以全部加载.

var map = null;
function LoadMap()
{
    LoadScript("http://maps.google.com/maps/api/js?sensor=false&", function() {
                        map = new google.maps.Map(document.getElementById('map_canvas'), myOptions);
                    }); 
}

function LoadScript(url, callback)
{
    jQuery.ajax({
            type: "GET",
            url: url,
            success: callback,
            dataType: "script",
            cache: true
    });
};

标签:google-maps,updatepanel,asp-net,javascript,c
来源: https://codeday.me/bug/20191101/1986482.html