Javascript Mapbox gl js在加载地图后绘制多个图层
我必须使用Mapbox gl js显示许多(~100万)GPS坐标。我有多个连续的Ajax请求,负责从服务器获取数据。我想做的是在每个Ajax请求之后向地图添加一个层,并立即显示它 问题是,如果我将代码放在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; }
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();