kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
53 lines (49 loc) • 7.04 kB
JavaScript
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.findMapBounds = findMapBounds;
exports.processLayerBounds = processLayerBounds;
var _src = require("/Users/ihordykhta/Desktop/unfolded/kepler.gl/src/utils/src");
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
/**
* takes a list of layer bounds and returns a single bound
*/
function processLayerBounds(layerBounds) {
return layerBounds.reduce(function (res, b) {
var minLongitude = Math.min(res[0], b[0]);
var minLatitude = Math.min(res[1], b[1]);
var maxLongitude = Math.max(res[2], b[2]);
var maxLatitude = Math.max(res[3], b[3]);
// for some reason WebMercatorViewport can't handle latitude -90,90 and throws an error
// so we default to lat/lng (0,0)
// viewport.js:81 Uncaught Error: Pixel project matrix not invertible
// at WebMercatorViewport16.Viewport5 (viewport.js:81:13)
// at new WebMercatorViewport16 (web-mercator-viewport.js:92:5)
// at getViewportFromMapState (map-utils.js:46:66)
return [(0, _src.validateLongitude)(minLongitude), (0, _src.validateLatitude)(minLatitude), (0, _src.validateLongitude)(maxLongitude), (0, _src.validateLatitude)(maxLatitude)];
}, [_src.MAX_LONGITUDE, _src.MAX_LATITUDE, _src.MIN_LONGITUDE, _src.MIN_LATITUDE]);
}
/**
* return center of map from given points
* @param layers
* @returns coordinates of map center, empty if not found
*/
function findMapBounds(layers) {
// find bounds in formatted layerData
// take ALL layers into account when finding map bounds
var availableLayerBounds = layers.reduce(function (res, l) {
if (l.meta && l.meta.bounds) {
res.push(l.meta.bounds);
}
return res;
}, []);
// return null if no layer is available
if (availableLayerBounds.length === 0) {
return null;
}
// merge bounds in each layer
return processLayerBounds(availableLayerBounds);
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3JjIiwicmVxdWlyZSIsInByb2Nlc3NMYXllckJvdW5kcyIsImxheWVyQm91bmRzIiwicmVkdWNlIiwicmVzIiwiYiIsIm1pbkxvbmdpdHVkZSIsIk1hdGgiLCJtaW4iLCJtaW5MYXRpdHVkZSIsIm1heExvbmdpdHVkZSIsIm1heCIsIm1heExhdGl0dWRlIiwidmFsaWRhdGVMb25naXR1ZGUiLCJ2YWxpZGF0ZUxhdGl0dWRlIiwiTUFYX0xPTkdJVFVERSIsIk1BWF9MQVRJVFVERSIsIk1JTl9MT05HSVRVREUiLCJNSU5fTEFUSVRVREUiLCJmaW5kTWFwQm91bmRzIiwibGF5ZXJzIiwiYXZhaWxhYmxlTGF5ZXJCb3VuZHMiLCJsIiwibWV0YSIsImJvdW5kcyIsInB1c2giLCJsZW5ndGgiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvcmVkdWNlcnMvc3JjL2RhdGEtdXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVFxuLy8gQ29weXJpZ2h0IGNvbnRyaWJ1dG9ycyB0byB0aGUga2VwbGVyLmdsIHByb2plY3RcblxuaW1wb3J0IHtCb3VuZHN9IGZyb20gJ0BrZXBsZXIuZ2wvdHlwZXMnO1xuaW1wb3J0IHtMYXllcn0gZnJvbSAnQGtlcGxlci5nbC9sYXllcnMnO1xuaW1wb3J0IHtcbiAgTUFYX0xBVElUVURFLFxuICBNSU5fTEFUSVRVREUsXG4gIE1BWF9MT05HSVRVREUsXG4gIE1JTl9MT05HSVRVREUsXG4gIHZhbGlkYXRlTG9uZ2l0dWRlLFxuICB2YWxpZGF0ZUxhdGl0dWRlXG59IGZyb20gJ0BrZXBsZXIuZ2wvdXRpbHMnO1xuXG4vKipcbiAqIHRha2VzIGEgbGlzdCBvZiBsYXllciBib3VuZHMgYW5kIHJldHVybnMgYSBzaW5nbGUgYm91bmRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHByb2Nlc3NMYXllckJvdW5kcyhsYXllckJvdW5kczogQm91bmRzW10pOiBCb3VuZHMge1xuICByZXR1cm4gbGF5ZXJCb3VuZHMucmVkdWNlKFxuICAgIChyZXMsIGIpID0+IHtcbiAgICAgIGNvbnN0IG1pbkxvbmdpdHVkZSA9IE1hdGgubWluKHJlc1swXSwgYlswXSk7XG4gICAgICBjb25zdCBtaW5MYXRpdHVkZSA9IE1hdGgubWluKHJlc1sxXSwgYlsxXSk7XG4gICAgICBjb25zdCBtYXhMb25naXR1ZGUgPSBNYXRoLm1heChyZXNbMl0sIGJbMl0pO1xuICAgICAgY29uc3QgbWF4TGF0aXR1ZGUgPSBNYXRoLm1heChyZXNbM10sIGJbM10pO1xuXG4gICAgICAvLyBmb3Igc29tZSByZWFzb24gV2ViTWVyY2F0b3JWaWV3cG9ydCBjYW4ndCBoYW5kbGUgbGF0aXR1ZGUgLTkwLDkwIGFuZCB0aHJvd3MgYW4gZXJyb3JcbiAgICAgIC8vIHNvIHdlIGRlZmF1bHQgdG8gbGF0L2xuZyAoMCwwKVxuICAgICAgLy8gdmlld3BvcnQuanM6ODEgVW5jYXVnaHQgRXJyb3I6IFBpeGVsIHByb2plY3QgbWF0cml4IG5vdCBpbnZlcnRpYmxlXG4gICAgICAvLyBhdCBXZWJNZXJjYXRvclZpZXdwb3J0MTYuVmlld3BvcnQ1ICh2aWV3cG9ydC5qczo4MToxMylcbiAgICAgIC8vIGF0IG5ldyBXZWJNZXJjYXRvclZpZXdwb3J0MTYgKHdlYi1tZXJjYXRvci12aWV3cG9ydC5qczo5Mjo1KVxuICAgICAgLy8gYXQgZ2V0Vmlld3BvcnRGcm9tTWFwU3RhdGUgKG1hcC11dGlscy5qczo0Njo2NilcbiAgICAgIHJldHVybiBbXG4gICAgICAgIHZhbGlkYXRlTG9uZ2l0dWRlKG1pbkxvbmdpdHVkZSksXG4gICAgICAgIHZhbGlkYXRlTGF0aXR1ZGUobWluTGF0aXR1ZGUpLFxuICAgICAgICB2YWxpZGF0ZUxvbmdpdHVkZShtYXhMb25naXR1ZGUpLFxuICAgICAgICB2YWxpZGF0ZUxhdGl0dWRlKG1heExhdGl0dWRlKVxuICAgICAgXTtcbiAgICB9LFxuICAgIFtNQVhfTE9OR0lUVURFLCBNQVhfTEFUSVRVREUsIE1JTl9MT05HSVRVREUsIE1JTl9MQVRJVFVERV1cbiAgKTtcbn1cblxuLyoqXG4gKiByZXR1cm4gY2VudGVyIG9mIG1hcCBmcm9tIGdpdmVuIHBvaW50c1xuICogQHBhcmFtIGxheWVyc1xuICogQHJldHVybnMgY29vcmRpbmF0ZXMgb2YgbWFwIGNlbnRlciwgZW1wdHkgaWYgbm90IGZvdW5kXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmaW5kTWFwQm91bmRzKGxheWVyczogTGF5ZXJbXSk6IEJvdW5kcyB8IG51bGwge1xuICAvLyBmaW5kIGJvdW5kcyBpbiBmb3JtYXR0ZWQgbGF5ZXJEYXRhXG4gIC8vIHRha2UgQUxMIGxheWVycyBpbnRvIGFjY291bnQgd2hlbiBmaW5kaW5nIG1hcCBib3VuZHNcbiAgY29uc3QgYXZhaWxhYmxlTGF5ZXJCb3VuZHMgPSBsYXllcnMucmVkdWNlKChyZXMsIGwpID0+IHtcbiAgICBpZiAobC5tZXRhICYmIGwubWV0YS5ib3VuZHMpIHtcbiAgICAgIHJlcy5wdXNoKGwubWV0YS5ib3VuZHMpO1xuICAgIH1cbiAgICByZXR1cm4gcmVzO1xuICB9LCBbXSBhcyBCb3VuZHNbXSk7XG4gIC8vIHJldHVybiBudWxsIGlmIG5vIGxheWVyIGlzIGF2YWlsYWJsZVxuICBpZiAoYXZhaWxhYmxlTGF5ZXJCb3VuZHMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIG51bGw7XG4gIH1cbiAgLy8gbWVyZ2UgYm91bmRzIGluIGVhY2ggbGF5ZXJcbiAgcmV0dXJuIHByb2Nlc3NMYXllckJvdW5kcyhhdmFpbGFibGVMYXllckJvdW5kcyk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFLQSxJQUFBQSxJQUFBLEdBQUFDLE9BQUE7QUFMQTtBQUNBOztBQWFBO0FBQ0E7QUFDQTtBQUNPLFNBQVNDLGtCQUFrQkEsQ0FBQ0MsV0FBcUIsRUFBVTtFQUNoRSxPQUFPQSxXQUFXLENBQUNDLE1BQU0sQ0FDdkIsVUFBQ0MsR0FBRyxFQUFFQyxDQUFDLEVBQUs7SUFDVixJQUFNQyxZQUFZLEdBQUdDLElBQUksQ0FBQ0MsR0FBRyxDQUFDSixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUVDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFNSSxXQUFXLEdBQUdGLElBQUksQ0FBQ0MsR0FBRyxDQUFDSixHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUVDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMxQyxJQUFNSyxZQUFZLEdBQUdILElBQUksQ0FBQ0ksR0FBRyxDQUFDUCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUVDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzQyxJQUFNTyxXQUFXLEdBQUdMLElBQUksQ0FBQ0ksR0FBRyxDQUFDUCxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUVDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQzs7SUFFMUM7SUFDQTtJQUNBO0lBQ0E7SUFDQTtJQUNBO0lBQ0EsT0FBTyxDQUNMLElBQUFRLHNCQUFpQixFQUFDUCxZQUFZLENBQUMsRUFDL0IsSUFBQVEscUJBQWdCLEVBQUNMLFdBQVcsQ0FBQyxFQUM3QixJQUFBSSxzQkFBaUIsRUFBQ0gsWUFBWSxDQUFDLEVBQy9CLElBQUFJLHFCQUFnQixFQUFDRixXQUFXLENBQUMsQ0FDOUI7RUFDSCxDQUFDLEVBQ0QsQ0FBQ0csa0JBQWEsRUFBRUMsaUJBQVksRUFBRUMsa0JBQWEsRUFBRUMsaUJBQVksQ0FDM0QsQ0FBQztBQUNIOztBQUVBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDTyxTQUFTQyxhQUFhQSxDQUFDQyxNQUFlLEVBQWlCO0VBQzVEO0VBQ0E7RUFDQSxJQUFNQyxvQkFBb0IsR0FBR0QsTUFBTSxDQUFDakIsTUFBTSxDQUFDLFVBQUNDLEdBQUcsRUFBRWtCLENBQUMsRUFBSztJQUNyRCxJQUFJQSxDQUFDLENBQUNDLElBQUksSUFBSUQsQ0FBQyxDQUFDQyxJQUFJLENBQUNDLE1BQU0sRUFBRTtNQUMzQnBCLEdBQUcsQ0FBQ3FCLElBQUksQ0FBQ0gsQ0FBQyxDQUFDQyxJQUFJLENBQUNDLE1BQU0sQ0FBQztJQUN6QjtJQUNBLE9BQU9wQixHQUFHO0VBQ1osQ0FBQyxFQUFFLEVBQWMsQ0FBQztFQUNsQjtFQUNBLElBQUlpQixvQkFBb0IsQ0FBQ0ssTUFBTSxLQUFLLENBQUMsRUFBRTtJQUNyQyxPQUFPLElBQUk7RUFDYjtFQUNBO0VBQ0EsT0FBT3pCLGtCQUFrQixDQUFDb0Isb0JBQW9CLENBQUM7QUFDakQiLCJpZ25vcmVMaXN0IjpbXX0=
;