in src/globemap.ts [754:791]
private static extendTiles(tileCacheData: string, language: string, deferred: JQueryDeferred<{}>) {
let result = [];
if (!tileCacheData || !tileCacheData.length) {
deferred.resolve(result);
return;
}
let tileCacheArray: ITileGapObject[] = JSON.parse(tileCacheData);
if (!Array.isArray(tileCacheArray) || !tileCacheArray.length) {
deferred.resolve(result);
return;
}
GlobeMap.getBingMapsServerMetadata()
.then((metadata: BingResourceMetadata) => {
let urlTemplate = metadata.imageUrl.replace("{culture}", language);
const subdomains = metadata.imageUrlSubdomains;
tileCacheArray.forEach((zoomArray: ITileGapObject, level) => {
const rank: number = zoomArray.rank;
const gaps = zoomArray.gaps;
let resultForCurrentZoom = {};
gaps.forEach((gap: number[]) => {
for (let gapItem = _.first(gap); gapItem <= _.last(gap); gapItem++) {
let stringGap: string = gapItem.toString();
while (stringGap.length < rank) {
stringGap = `0${stringGap}`;
}
resultForCurrentZoom[stringGap] = urlTemplate.replace("{subdomain}", subdomains[level]).replace("{quadkey}", stringGap);
}
});
result.push(resultForCurrentZoom);
});
deferred.resolve(result);
});
}