This commit is contained in:
50
node_modules/@mapbox/mapbox-gl-style-spec/composite.js
generated
vendored
Normal file
50
node_modules/@mapbox/mapbox-gl-style-spec/composite.js
generated
vendored
Normal file
@@ -0,0 +1,50 @@
|
||||
|
||||
export default function (style) {
|
||||
const styleIDs = [];
|
||||
const sourceIDs = [];
|
||||
const compositedSourceLayers = [];
|
||||
|
||||
for (const id in style.sources) {
|
||||
const source = style.sources[id];
|
||||
|
||||
if (source.type !== "vector")
|
||||
continue;
|
||||
|
||||
const match = /^mapbox:\/\/(.*)/.exec(source.url);
|
||||
if (!match)
|
||||
continue;
|
||||
|
||||
styleIDs.push(id);
|
||||
sourceIDs.push(match[1]);
|
||||
}
|
||||
|
||||
if (styleIDs.length < 2)
|
||||
return style;
|
||||
|
||||
styleIDs.forEach((id) => {
|
||||
delete style.sources[id];
|
||||
});
|
||||
|
||||
const compositeID = sourceIDs.join(",");
|
||||
|
||||
style.sources[compositeID] = {
|
||||
"type": "vector",
|
||||
"url": `mapbox://${compositeID}`
|
||||
};
|
||||
|
||||
style.layers.forEach((layer) => {
|
||||
if (styleIDs.indexOf(layer.source) >= 0) {
|
||||
layer.source = compositeID;
|
||||
|
||||
if ('source-layer' in layer) {
|
||||
if (compositedSourceLayers.indexOf(layer['source-layer']) >= 0) {
|
||||
throw new Error('Conflicting source layer names');
|
||||
} else {
|
||||
compositedSourceLayers.push(layer['source-layer']);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return style;
|
||||
}
|
||||
Reference in New Issue
Block a user