我有一些Google Maps JS,可在地图上绘制许多标记。但是,在加载标记时,我注意到图像没有及时加载,因此没有放置标记。
为了解决这个问题,我修改了返回地图标记的函数,如下所示:
function newGoogleMapPin(type){
var imgpath = "img/gmapicons/"+type+".png";
var img = new Image();
img.src = imgpath;
var imgloaded = false;
while(imgloaded == false) {
img.onload = function() {
imgloaded = true;
}
}
return new google.maps.MarkerImage(imgpath, new google.maps.Size(img.width, img.height));
}
问题是
imgloaded
从未设置为true
,我会误解关闭吗? (大概吧!)
最佳答案
您必须记住,JavaScript本质上是单线程的,并且实际上该单线程在JavaScript执行和浏览器呈现之间共享。因此,您的while
循环将阻塞线程,并将永远循环。
while(imgloaded == false) {
// onload will never get called:
img.onload = function() {
imgloaded = true;
}
}