@deck.gl/geo-layers
Version:
deck.gl layers supporting geospatial use cases and GIS formats
51 lines (39 loc) • 1.59 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.quadkeyToWorldBounds = quadkeyToWorldBounds;
exports.getQuadkeyPolygon = getQuadkeyPolygon;
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _webMercator = require("@math.gl/web-mercator");
var TILE_SIZE = 512;
function quadkeyToWorldBounds(quadkey) {
var x = 0;
var y = 0;
var mask = 1 << quadkey.length;
var scale = mask / TILE_SIZE;
for (var i = 0; i < quadkey.length; i++) {
mask >>= 1;
var q = parseInt(quadkey[i]);
if (q % 2) x |= mask;
if (q > 1) y |= mask;
}
return [[x / scale, TILE_SIZE - y / scale], [(x + 0.99) / scale, TILE_SIZE - (y + 0.99) / scale]];
}
function getQuadkeyPolygon(quadkey) {
var _quadkeyToWorldBounds = quadkeyToWorldBounds(quadkey),
_quadkeyToWorldBounds2 = (0, _slicedToArray2.default)(_quadkeyToWorldBounds, 2),
topLeft = _quadkeyToWorldBounds2[0],
bottomRight = _quadkeyToWorldBounds2[1];
var _worldToLngLat = (0, _webMercator.worldToLngLat)(topLeft),
_worldToLngLat2 = (0, _slicedToArray2.default)(_worldToLngLat, 2),
w = _worldToLngLat2[0],
n = _worldToLngLat2[1];
var _worldToLngLat3 = (0, _webMercator.worldToLngLat)(bottomRight),
_worldToLngLat4 = (0, _slicedToArray2.default)(_worldToLngLat3, 2),
e = _worldToLngLat4[0],
s = _worldToLngLat4[1];
return [e, n, e, s, w, s, w, n, e, n];
}
//# sourceMappingURL=quadkey-utils.js.map