为了避免出现7/8“未指定的错误”,我最近将JSON驱动的GoogleMaps v3实现的初始化逻辑从内联跟随$(document).ready转移到从window.onload()触发的事件函数中。现在,曾经非常快速的负载现在需要15-20秒+来加载。我知道oninit和onload之间存在一些微妙的差异,但这似乎是极端的。有什么想法吗?
$(document).ready(function(){
var branchitems=[];
var markers=[];
var map="";
window.onload = function() {
var latlng = new google.maps.LatLng(59.5, -100.68);
var myOptions = {
zoom: 3,
center: latlng,
mapTypeId: google.maps.MapTypeId.TERRAIN
};
map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
PopulateMap(map);
}
function PopulateMap(map){
... my logic for the JSON portion of the map ...
};
答案 0 :(得分:0)
window.onload是放置它的正确位置,否则你的代码可能会在Maps API下载之前执行。
如果这需要10到15秒,那么很可能你也在加载一堆其他资源。 window.onload将在所有内容完成下载后执行(例如脚本标记中的所有脚本)。
一种解决方案可能是异步加载Maps API V3(请参阅:http://code.google.com/apis/maps/documentation/javascript/basics.html#Async)。然后,您可以在加载API后立即开始构建地图。
另一种解决方案是在用户访问网站时异步加载您不需要准备的任何内容,或者从更快的位置加载资源(例如从Google CDN而不是从您自己的CDN加载jQuery)服务器)。