function initSources(style) {
const queue = chunkedQueue.init();
const { sources, layers } = style;
const getters = {};
const workerMonitors = [];
const listenerDiv = DOM.element("div");
Object.entries(sources).forEach(([key, source]) => {
var loader;
if (source.type === "vector") {
loader = initVectorLoader(key, source);
}
if (source.type === "geojson") {
console.log("Check how often this happens");
loader = initGeoJsonLoader(source);
}
if (source.type === "raster") {
loader = initRasterLoader(source);
}
let tileFactory = buildFactory(loader, listenerDiv);
getters[key] = initSource({ source, tileFactory });
});
function initVectorLoader(key, source) {
let subset = layers.filter(
l => l.source === key && l.type !== "fill-extrusion"
);
let loader = tileMixer.initTileMixer({ source, layers: subset, queue });
workerMonitors.push(loader.workerTasks);
return loader;
}
function getTilesets(viewpt, transfm) {
const tilesets = {};
Object.entries(getters).forEach(([key, getter]) => {
tilesets[key] = getter.getTiles(viewpt, transfm);
});
queue.sortTasks();
return tilesets;
}
return {
getTilesets,
workerTasks: () =>
workerMonitors.reduce((sum, counter) => sum + counter(), 0),
queuedTasks: () => queue.countTasks()
};
}