2015-10-24 66 views
-1

我试图在我的网站上放置带有信息窗口的谷歌地图,但需要它异步加载。这是我使用的代码:异步Google地图信息窗口

function initialize(lat,lng) { 

    var mapProp = { 
     center: new google.maps.LatLng(lat,lng), 
     zoom:15, 
     mapTypeId: google.maps.MapTypeId.ROADMAP, 
     disableDefaultUI:true 
    }; 
    var map = new google.maps.Map(document.getElementById("googleMap"),mapProp); 
} 

function loadScript() { 
    var script = document.createElement("script"); 
    script.type = "text/javascript"; 
    script.src = "http://maps.googleapis.com/maps/api/js?key=&sensor=false&callback=initialize"; 
    document.body.appendChild(script); 
} 

window.onload = loadScript; 

它使用一个click事件初始化并印有通过JavaScript生成的html:

... 
var lat=40.7127; 
var lng=-74.0059; 
.. 
<div onclick="initialize('+lat+','+lng+');">map</div> 
.. 
html_str += '<div id="googleMap" class="map"></div>'; 
document.getElementById(id).innerHTML = html_str; 

基本地图成功初始化,但我有麻烦添加信息窗口:

var infowindow = new google.maps.InfoWindow({ 
    content:"Hello World!" 
}); 

infowindow.open(map,marker); 

我试着把这个代码放入initialize()函数,但没有运气。我需要帮助将此信息窗口代码修改为上面的代码。

回答

0

要在信息窗口添加到您需要可以给它一个位置,或者给它一个地图现有的标记作为锚点。最好,我可以看到你应该得到一个JavaScript错误:Uncaught ReferenceError: marker is not defined

如果你没有一个标记,设置信息窗口的位置:

var infowindow = new google.maps.InfoWindow({ 
    content: "Hello World!" 
}); 
infowindow.setPosition(map.getCenter()); 
infowindow.open(map); 
0

在由window.onload调用的loadScript函数中,您已经有了一个初始化回调函数。但在这种情况下,你没有分配这些坐标。我认为在这种情况下初始化失败。

你通过调用explicty初始化函数事实上单击DIV尝试loadScript功能而不回调

function loadScript() { 
    var script = document.createElement("script"); 
    script.type = "text/javascript"; 
    script.src = "http://maps.googleapis.com/maps/api/js?key=&sensor=false"; 
    document.body.appendChild(script); 
} 
相关问题