我试图动态加载谷歌地图API.我正在使用以下代码:
var head= document.getElementsByTagName('head')[0];
var script= document.createElement('script');
script.type= 'text/javascript';
script.src= 'http://www.google.com/jsapi?key=<MY_KEY>;
head.appendChild(script);
Run Code Online (Sandbox Code Playgroud)
但在尝试创建地图时
map = new GMap2(document.getElementById("map"));
Run Code Online (Sandbox Code Playgroud)
要么
map = new google.maps.Map2(document.getElementById("map"));
Run Code Online (Sandbox Code Playgroud)
我收到了谷歌(或GMap2)未定义的错误.
你可以这样做.您可以在网址中添加回调函数名称.它会在API加载时调用.必须可以在文档的范围内访问该回调函数.
我之前通过使用jQuery在窗口上触发自定义事件来做到这一点:http://jsfiddle.net/fZqqW/5/
使用" http://maps.google.com/maps/api/js?sensor=false&callback=gMapsCallback "
window.gMapsCallback = function(){
$(window).trigger('gMapsLoaded');
}
$(document).ready((function(){
function initialize(){
var mapOptions = {
zoom: 8,
center: new google.maps.LatLng(-34.397, 150.644),
mapTypeId: google.maps.MapTypeId.ROADMAP
};
map = new google.maps.Map(document.getElementById('map_canvas'),mapOptions);
}
function loadGoogleMaps(){
var script_tag = document.createElement('script');
script_tag.setAttribute("type","text/javascript");
script_tag.setAttribute("src","http://maps.google.com/maps/api/js?sensor=false&callback=gMapsCallback");
(document.getElementsByTagName("head")[0] || document.documentElement).appendChild(script_tag);
}
$(window).bind('gMapsLoaded', initialize);
loadGoogleMaps();
})());?
Run Code Online (Sandbox Code Playgroud)
异步加载API
您可能希望在页面加载完成后或按需加载Maps API JavaScript代码.为此,您可以注入自己的标记以响应window.onload事件或函数调用,但是您需要另外指示Maps JavaScript API引导程序延迟应用程序代码的执行,直到Maps JavaScript API代码完全加载为止.您可以使用callback参数执行此操作,该参数将完成加载API时执行的函数作为参数.
以下代码指示应用程序在页面完全加载(使用window.onload)后加载Maps API,并将Maps JavaScript API写入页面中的标记.另外,我们通过将callback = initialize传递给Maps来指示API仅在API完全加载后执行initialize()函数
请参阅此处:https://developers.google.com/maps/documentation/javascript/tutorial
确保在Javascript加载完成之前没有实例化地图.
此外,如果您想使用AJAX API加载器,您需要这样做:
<script src="http://www.google.com/jsapi?key=ABCDEFG" type="text/javascript"></script>
<script type="text/javascript">
google.load("maps", "2.x");
// Call this function when the page has been loaded
function initialize() {
var map = new google.maps.Map2(document.getElementById("map"));
map.setCenter(new google.maps.LatLng(37.4419, -122.1419), 13);
}
google.setOnLoadCallback(initialize);
</script>
Run Code Online (Sandbox Code Playgroud)
否则,只需使用常规Maps API脚本源:
<script src="http://maps.google.com/maps?file=api&v=2&key=abcdefg&sensor=true_or_false" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12883 次 |
| 最近记录: |