Move quadKey function to the one place it is used
This commit is contained in:
@@ -8,10 +8,35 @@ import {jsonp as requestJSONP} from '../net.js';
|
|||||||
import {get as getProjection, getTransformFromProjections} from '../proj.js';
|
import {get as getProjection, getTransformFromProjections} from '../proj.js';
|
||||||
import SourceState from './State.js';
|
import SourceState from './State.js';
|
||||||
import TileImage from './TileImage.js';
|
import TileImage from './TileImage.js';
|
||||||
import {createOrUpdate, quadKey} from '../tilecoord.js';
|
import {createOrUpdate} from '../tilecoord.js';
|
||||||
import {createXYZ, extentFromProjection} from '../tilegrid.js';
|
import {createXYZ, extentFromProjection} from '../tilegrid.js';
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param {import('../tilecoord.js').TileCoord} tileCoord Tile coord.
|
||||||
|
* @return {string} Quad key.
|
||||||
|
*/
|
||||||
|
export function quadKey(tileCoord) {
|
||||||
|
const z = tileCoord[0];
|
||||||
|
const digits = new Array(z);
|
||||||
|
let mask = 1 << (z - 1);
|
||||||
|
let i, charCode;
|
||||||
|
for (i = 0; i < z; ++i) {
|
||||||
|
// 48 is charCode for 0 - '0'.charCodeAt(0)
|
||||||
|
charCode = 48;
|
||||||
|
if (tileCoord[1] & mask) {
|
||||||
|
charCode += 1;
|
||||||
|
}
|
||||||
|
if (tileCoord[2] & mask) {
|
||||||
|
charCode += 2;
|
||||||
|
}
|
||||||
|
digits[i] = String.fromCharCode(charCode);
|
||||||
|
mask >>= 1;
|
||||||
|
}
|
||||||
|
return digits.join('');
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The attribution containing a link to the Microsoft® Bing™ Maps Platform APIs’
|
* The attribution containing a link to the Microsoft® Bing™ Maps Platform APIs’
|
||||||
* Terms Of Use.
|
* Terms Of Use.
|
||||||
@@ -209,6 +234,7 @@ class BingMaps extends TileImage {
|
|||||||
const hidpi = this.hidpi_;
|
const hidpi = this.hidpi_;
|
||||||
this.tileUrlFunction = createFromTileUrlFunctions(
|
this.tileUrlFunction = createFromTileUrlFunctions(
|
||||||
resource.imageUrlSubdomains.map(function(subdomain) {
|
resource.imageUrlSubdomains.map(function(subdomain) {
|
||||||
|
/** @type {import('../tilecoord.js').TileCoord} */
|
||||||
const quadKeyTileCoord = [0, 0, 0];
|
const quadKeyTileCoord = [0, 0, 0];
|
||||||
const imageUrl = resource.imageUrl
|
const imageUrl = resource.imageUrl
|
||||||
.replace('{subdomain}', subdomain)
|
.replace('{subdomain}', subdomain)
|
||||||
|
|||||||
@@ -70,31 +70,6 @@ export function hash(tileCoord) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param {TileCoord} tileCoord Tile coord.
|
|
||||||
* @return {string} Quad key.
|
|
||||||
*/
|
|
||||||
export function quadKey(tileCoord) {
|
|
||||||
const z = tileCoord[0];
|
|
||||||
const digits = new Array(z);
|
|
||||||
let mask = 1 << (z - 1);
|
|
||||||
let i, charCode;
|
|
||||||
for (i = 0; i < z; ++i) {
|
|
||||||
// 48 is charCode for 0 - '0'.charCodeAt(0)
|
|
||||||
charCode = 48;
|
|
||||||
if (tileCoord[1] & mask) {
|
|
||||||
charCode += 1;
|
|
||||||
}
|
|
||||||
if (tileCoord[2] & mask) {
|
|
||||||
charCode += 2;
|
|
||||||
}
|
|
||||||
digits[i] = String.fromCharCode(charCode);
|
|
||||||
mask >>= 1;
|
|
||||||
}
|
|
||||||
return digits.join('');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param {TileCoord} tileCoord Tile coordinate.
|
* @param {TileCoord} tileCoord Tile coordinate.
|
||||||
* @param {!import("./tilegrid/TileGrid.js").default} tileGrid Tile grid.
|
* @param {!import("./tilegrid/TileGrid.js").default} tileGrid Tile grid.
|
||||||
|
|||||||
@@ -1,10 +1,17 @@
|
|||||||
import BingMaps from '../../../../src/ol/source/BingMaps.js';
|
import BingMaps, {quadKey} from '../../../../src/ol/source/BingMaps.js';
|
||||||
import {quadKey} from '../../../../src/ol/tilecoord.js';
|
|
||||||
import {unByKey} from '../../../../src/ol/Observable.js';
|
import {unByKey} from '../../../../src/ol/Observable.js';
|
||||||
|
|
||||||
|
|
||||||
describe('ol.source.BingMaps', function() {
|
describe('ol.source.BingMaps', function() {
|
||||||
|
|
||||||
|
describe('quadKey()', function() {
|
||||||
|
it('returns expected string', function() {
|
||||||
|
const tileCoord = [3, 3, 5];
|
||||||
|
const s = quadKey(tileCoord);
|
||||||
|
expect(s).to.eql('213');
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
describe('#tileUrlFunction()', function() {
|
describe('#tileUrlFunction()', function() {
|
||||||
|
|
||||||
let source, tileGrid;
|
let source, tileGrid;
|
||||||
|
|||||||
@@ -1,5 +1,4 @@
|
|||||||
import {
|
import {
|
||||||
quadKey,
|
|
||||||
getKey,
|
getKey,
|
||||||
fromKey,
|
fromKey,
|
||||||
hash,
|
hash,
|
||||||
@@ -19,14 +18,6 @@ describe('ol.TileCoord', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
describe('call quadKey', function() {
|
|
||||||
it('returns expected string', function() {
|
|
||||||
const tileCoord = [3, 3, 5];
|
|
||||||
const s = quadKey(tileCoord);
|
|
||||||
expect(s).to.eql('213');
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
describe('getKey()', function() {
|
describe('getKey()', function() {
|
||||||
it('returns a key for a tile coord', function() {
|
it('returns a key for a tile coord', function() {
|
||||||
const key = getKey([1, 2, 3]);
|
const key = getKey([1, 2, 3]);
|
||||||
|
|||||||
Reference in New Issue
Block a user