private static extendTiles()

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);
                });
        }