@syncfusion/ej2-maps
Version:
The Maps component is used to visualize the geographical data and represent the statistical data of a particular geographical area on earth with user interactivity, and provides various customizing options
52 lines (48 loc) • 1.55 kB
text/typescript
import { Maps } from '../maps';
import { Tile } from '../index';
import { isNullOrUndefined } from '@syncfusion/ej2-base';
/**
* Bing map src doc
*/
export class BingMap {
/**
* map instance
*/
private maps: Maps;
public subDomains: string[];
public imageUrl: string;
public maxZoom: string;
constructor(maps: Maps) {
this.maps = maps;
}
public getBingMap(tile: Tile, key: string, type: string, language: string, imageUrl: string, subDomains: string[]): string {
let quadKey: string = '';
const maxZoom: number = Math.min(this.maps.tileZoomLevel, parseInt(this.maxZoom, 10));
for (let i: number = maxZoom; i > 0; i--) {
let digit: number = 0;
const mask: number = 1 << (i - 1);
if ((tile.x & mask) !== 0) {
digit++;
}
if ((tile.y & mask) !== 0) {
digit += 2;
}
quadKey = quadKey + '' + digit;
}
if (!isNullOrUndefined(subDomains)) {
const subDomain: string = subDomains[Math.min(parseInt(quadKey.substr(quadKey.length - 1, 1), 10), subDomains.length)];
imageUrl = imageUrl.replace('{quadkey}', quadKey).replace('{subdomain}', subDomain);
return imageUrl += '&mkt=' + language + '&ur=IN&Key=' + key;
} else {
return '';
}
}
/**
* @returns {void}
* @private
*/
public destroy(): void {
this.maps = null;
this.subDomains = [];
}
}