我有一些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;
    }
}

09-27 13:04