Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ajax/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Mapbox gl js在加载地图后绘制多个图层_Javascript_Ajax_Mapbox Gl Js - Fatal编程技术网

Javascript Mapbox gl js在加载地图后绘制多个图层

Javascript Mapbox gl js在加载地图后绘制多个图层,javascript,ajax,mapbox-gl-js,Javascript,Ajax,Mapbox Gl Js,我必须使用Mapbox gl js显示许多(~100万)GPS坐标。我有多个连续的Ajax请求,负责从服务器获取数据。我想做的是在每个Ajax请求之后向地图添加一个层,并立即显示它 问题是,如果我将代码放在map.on('style.load',function(){})事件中,则直到最后一个Ajax调用终止后,才会显示映射。我现在拥有的是这样的东西: function loadData(finished) { if (finished) { return; }

我必须使用Mapbox gl js显示许多(~100万)GPS坐标。我有多个连续的Ajax请求,负责从服务器获取数据。我想做的是在每个Ajax请求之后向地图添加一个层,并立即显示它

问题是,如果我将代码放在
map.on('style.load',function(){})
事件中,则直到最后一个Ajax调用终止后,才会显示映射。我现在拥有的是这样的东西:

function loadData(finished) {
    if (finished) {
        return;
    }
    // do ajax request and wait for completion
    // if last request, set finished = true
    // call to map.addSource()
    // call to map.addLayer()
    // recursive call to loadData()
}

map.on("style.load", function() {
    loadData();
});

你知道这个问题的解决方案吗?

我通过用以下内容替换map.on(…)调用解决了这个问题:

function waitForMapLoaded() {
    if(!map.loaded()) {
        window.setTimeout(waitForMapLoaded, 100);
    } else {
        loadData();
    }
}
waitForMapLoaded();

我用以下内容替换map.on(…)调用解决了这个问题:

function waitForMapLoaded() {
    if(!map.loaded()) {
        window.setTimeout(waitForMapLoaded, 100);
    } else {
        loadData();
    }
}
waitForMapLoaded();