2010-10-21 136 views
1

在执行流程中,initialize()函数需要出现在代码中,以允许通过JQuery​​调用加载Google Map v3 API映射。通过JQuery Load加载谷歌地图?

我此刻的代码看起来像这样

$('#maplink').click(function(){ 
    $('.fades').fadeOut('slow'); 
    $('#googleMap').show(); 
    $('#googleMap').load("map.html"); 
    initialize(); 
});` 

然而,这不是初始化AJAX调用后的地图。

任何帮助,将不胜感激:)

回答

0

对google maps的initialize()调用可以作为map.html中的脚本添加,然后当jquery包含html时它将执行javascript。

或者,你可以这样做,您有是负载调用是异步的,因此下面

$('#googleMap').load("map.html",function(){ 
    alert('map is loaded and ready'); 
}); 

问题,当初始化()被调用你的Ajax负荷可能尚未完成。

2

这是一个非常古老的问题,但对于任何以此结束的人来说,将.html页面加载到div不是动态加载Maps API地图的正确方法。以下是应该如何完成的步骤:

首先,将所有Maps API脚本放在主页面 - 具有#googleMap div的页面。或者,如果您想将该脚本本身放入异步加载的文件中,请将其放入.js文件并使用$.getScript()加载。

然后,如果您要异步加载Maps API和地图以响应按钮单击,请使用this asynchronous Maps API example中的代码。

在该示例页面,你会不会使用此行:

window.onload = loadScript; 

相反,你会从你的点击处理程序调用loadScript()功能:

$('#maplink').click(function(){ 
    $('.fades').fadeOut('slow'); 
    $('#googleMap').show(); 
    loadScript(); 
}); 

其中loadScript()是示例中的Maps API加载功能。

实际上,您可以使用$.getScript()加载Maps API - 只需给它使用loadScript()示例函数中使用的URL即可。 loadScript()函数几乎等同于$.getScript(),除了硬编码的URL。

当然,您还需要在该示例中更改initialize()函数中的内容以匹配您的页面。

+1

感谢思想的后代。 – agconti 2013-08-21 13:10:06