通过JQuery Load加载Google Map?

时间:2010-10-21 15:59:49

标签: javascript jquery ajax google-maps

在执行流程中,initialize()函数需要出现在代码中,以允许通过JQuery .load()调用加载Google Map v3 API地图。

我目前的代码看起来像这样

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

但是,这不是在AJAX调用之后初始化地图。

任何帮助将不胜感激:)

3 个答案:

答案 0 :(得分: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()

当然,您还需要更改该示例中的initialize()功能以匹配您的网页。

答案 1 :(得分:0)

我对jQuery不是很了解,但我不确定你为什么要让jQuery加载地图。如果您尝试异步加载地图,谷歌提供的方式https://developers.google.com/maps/documentation/javascript/tutorial#Loading_the_Maps_API除此之外。我帮不了多少。遗憾

答案 2 :(得分:0)

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

或者,您可以执行以下操作

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

您遇到的问题是加载调用是异步的,因此,当调用initialize()时,您的ajax加载可能尚未完成。