kepler.gl
Version:
kepler.gl is a webgl based application to visualize large scale location data in the browser
47 lines (45 loc) • 6.34 kB
JavaScript
;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.hexagonToPolygonGeo = hexagonToPolygonGeo;
var _core = require("@deck.gl/core");
var _console = _interopRequireDefault(require("global/console"));
// SPDX-License-Identifier: MIT
// Copyright contributors to the kepler.gl project
function hexagonToPolygonGeo(object, properties, radius, mapState, coordinate) {
var viewport = new _core.WebMercatorViewport(mapState);
var pos = object.position || coordinate;
var position = pos ? Array.from(pos) : null;
if (!position || position.length < 2) {
return null;
}
var screenCenter = viewport.projectFlat(position);
var _viewport$getDistance = viewport.getDistanceScales(position),
unitsPerMeter = _viewport$getDistance.unitsPerMeter;
if (!Array.isArray(unitsPerMeter)) {
_console["default"].warn("unitsPerMeter is undefined");
return null;
}
var pixRadius = radius * unitsPerMeter[0];
var coordinates = [];
for (var i = 0; i < 6; i++) {
var vertex = hex_corner(screenCenter, pixRadius, i);
coordinates.push(viewport.unprojectFlat(vertex));
}
coordinates.push(coordinates[0]);
return {
geometry: {
coordinates: coordinates,
type: 'LineString'
},
properties: properties
};
}
function hex_corner(center, radius, i) {
var angle_deg = 60 * i + 30;
var angle_rad = Math.PI / 180 * angle_deg;
return [center[0] + radius * Math.cos(angle_rad), center[1] + radius * Math.sin(angle_rad)];
}
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29yZSIsInJlcXVpcmUiLCJfY29uc29sZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJoZXhhZ29uVG9Qb2x5Z29uR2VvIiwib2JqZWN0IiwicHJvcGVydGllcyIsInJhZGl1cyIsIm1hcFN0YXRlIiwiY29vcmRpbmF0ZSIsInZpZXdwb3J0IiwiV2ViTWVyY2F0b3JWaWV3cG9ydCIsInBvcyIsInBvc2l0aW9uIiwiQXJyYXkiLCJmcm9tIiwibGVuZ3RoIiwic2NyZWVuQ2VudGVyIiwicHJvamVjdEZsYXQiLCJfdmlld3BvcnQkZ2V0RGlzdGFuY2UiLCJnZXREaXN0YW5jZVNjYWxlcyIsInVuaXRzUGVyTWV0ZXIiLCJpc0FycmF5IiwiQ29uc29sZSIsIndhcm4iLCJwaXhSYWRpdXMiLCJjb29yZGluYXRlcyIsImkiLCJ2ZXJ0ZXgiLCJoZXhfY29ybmVyIiwicHVzaCIsInVucHJvamVjdEZsYXQiLCJnZW9tZXRyeSIsInR5cGUiLCJjZW50ZXIiLCJhbmdsZV9kZWciLCJhbmdsZV9yYWQiLCJNYXRoIiwiUEkiLCJjb3MiLCJzaW4iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvaGV4YWdvbi1sYXllci9oZXhhZ29uLXV0aWxzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVRcbi8vIENvcHlyaWdodCBjb250cmlidXRvcnMgdG8gdGhlIGtlcGxlci5nbCBwcm9qZWN0XG5cbmltcG9ydCB7V2ViTWVyY2F0b3JWaWV3cG9ydH0gZnJvbSAnQGRlY2suZ2wvY29yZSc7XG5pbXBvcnQgQ29uc29sZSBmcm9tICdnbG9iYWwvY29uc29sZSc7XG5pbXBvcnQgdHlwZSB7Q2VudHJvaWR9IGZyb20gJ0BrZXBsZXIuZ2wvY29tbW9uLXV0aWxzJztcblxuZXhwb3J0IGZ1bmN0aW9uIGhleGFnb25Ub1BvbHlnb25HZW8ob2JqZWN0LCBwcm9wZXJ0aWVzLCByYWRpdXMsIG1hcFN0YXRlLCBjb29yZGluYXRlPykge1xuICBjb25zdCB2aWV3cG9ydCA9IG5ldyBXZWJNZXJjYXRvclZpZXdwb3J0KG1hcFN0YXRlKTtcbiAgY29uc3QgcG9zID0gb2JqZWN0LnBvc2l0aW9uIHx8IGNvb3JkaW5hdGU7XG4gIGNvbnN0IHBvc2l0aW9uID0gcG9zID8gKEFycmF5LmZyb20ocG9zKSBhcyBudW1iZXJbXSkgOiBudWxsO1xuICBpZiAoIXBvc2l0aW9uIHx8IHBvc2l0aW9uLmxlbmd0aCA8IDIpIHtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHNjcmVlbkNlbnRlciA9IHZpZXdwb3J0LnByb2plY3RGbGF0KHBvc2l0aW9uKTtcbiAgY29uc3Qge3VuaXRzUGVyTWV0ZXJ9ID0gdmlld3BvcnQuZ2V0RGlzdGFuY2VTY2FsZXMocG9zaXRpb24pO1xuXG4gIGlmICghQXJyYXkuaXNBcnJheSh1bml0c1Blck1ldGVyKSkge1xuICAgIENvbnNvbGUud2FybihgdW5pdHNQZXJNZXRlciBpcyB1bmRlZmluZWRgKTtcbiAgICByZXR1cm4gbnVsbDtcbiAgfVxuXG4gIGNvbnN0IHBpeFJhZGl1cyA9IHJhZGl1cyAqIHVuaXRzUGVyTWV0ZXJbMF07XG5cbiAgY29uc3QgY29vcmRpbmF0ZXM6IGFueVtdID0gW107XG5cbiAgZm9yIChsZXQgaSA9IDA7IGkgPCA2OyBpKyspIHtcbiAgICBjb25zdCB2ZXJ0ZXggPSBoZXhfY29ybmVyKHNjcmVlbkNlbnRlciwgcGl4UmFkaXVzLCBpKTtcbiAgICBjb29yZGluYXRlcy5wdXNoKHZpZXdwb3J0LnVucHJvamVjdEZsYXQodmVydGV4KSk7XG4gIH1cblxuICBjb29yZGluYXRlcy5wdXNoKGNvb3JkaW5hdGVzWzBdKTtcblxuICByZXR1cm4ge1xuICAgIGdlb21ldHJ5OiB7XG4gICAgICBjb29yZGluYXRlcyxcbiAgICAgIHR5cGU6ICdMaW5lU3RyaW5nJ1xuICAgIH0sXG4gICAgcHJvcGVydGllc1xuICB9O1xufVxuXG5mdW5jdGlvbiBoZXhfY29ybmVyKGNlbnRlcjogQ2VudHJvaWQsIHJhZGl1czogbnVtYmVyLCBpOiBudW1iZXIpIHtcbiAgY29uc3QgYW5nbGVfZGVnID0gNjAgKiBpICsgMzA7XG4gIGNvbnN0IGFuZ2xlX3JhZCA9IChNYXRoLlBJIC8gMTgwKSAqIGFuZ2xlX2RlZztcblxuICByZXR1cm4gW2NlbnRlclswXSArIHJhZGl1cyAqIE1hdGguY29zKGFuZ2xlX3JhZCksIGNlbnRlclsxXSArIHJhZGl1cyAqIE1hdGguc2luKGFuZ2xlX3JhZCldO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBR0EsSUFBQUEsS0FBQSxHQUFBQyxPQUFBO0FBQ0EsSUFBQUMsUUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBO0FBSkE7QUFDQTs7QUFNTyxTQUFTRyxtQkFBbUJBLENBQUNDLE1BQU0sRUFBRUMsVUFBVSxFQUFFQyxNQUFNLEVBQUVDLFFBQVEsRUFBRUMsVUFBVyxFQUFFO0VBQ3JGLElBQU1DLFFBQVEsR0FBRyxJQUFJQyx5QkFBbUIsQ0FBQ0gsUUFBUSxDQUFDO0VBQ2xELElBQU1JLEdBQUcsR0FBR1AsTUFBTSxDQUFDUSxRQUFRLElBQUlKLFVBQVU7RUFDekMsSUFBTUksUUFBUSxHQUFHRCxHQUFHLEdBQUlFLEtBQUssQ0FBQ0MsSUFBSSxDQUFDSCxHQUFHLENBQUMsR0FBZ0IsSUFBSTtFQUMzRCxJQUFJLENBQUNDLFFBQVEsSUFBSUEsUUFBUSxDQUFDRyxNQUFNLEdBQUcsQ0FBQyxFQUFFO0lBQ3BDLE9BQU8sSUFBSTtFQUNiO0VBRUEsSUFBTUMsWUFBWSxHQUFHUCxRQUFRLENBQUNRLFdBQVcsQ0FBQ0wsUUFBUSxDQUFDO0VBQ25ELElBQUFNLHFCQUFBLEdBQXdCVCxRQUFRLENBQUNVLGlCQUFpQixDQUFDUCxRQUFRLENBQUM7SUFBckRRLGFBQWEsR0FBQUYscUJBQUEsQ0FBYkUsYUFBYTtFQUVwQixJQUFJLENBQUNQLEtBQUssQ0FBQ1EsT0FBTyxDQUFDRCxhQUFhLENBQUMsRUFBRTtJQUNqQ0UsbUJBQU8sQ0FBQ0MsSUFBSSw2QkFBNkIsQ0FBQztJQUMxQyxPQUFPLElBQUk7RUFDYjtFQUVBLElBQU1DLFNBQVMsR0FBR2xCLE1BQU0sR0FBR2MsYUFBYSxDQUFDLENBQUMsQ0FBQztFQUUzQyxJQUFNSyxXQUFrQixHQUFHLEVBQUU7RUFFN0IsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEVBQUUsRUFBRTtJQUMxQixJQUFNQyxNQUFNLEdBQUdDLFVBQVUsQ0FBQ1osWUFBWSxFQUFFUSxTQUFTLEVBQUVFLENBQUMsQ0FBQztJQUNyREQsV0FBVyxDQUFDSSxJQUFJLENBQUNwQixRQUFRLENBQUNxQixhQUFhLENBQUNILE1BQU0sQ0FBQyxDQUFDO0VBQ2xEO0VBRUFGLFdBQVcsQ0FBQ0ksSUFBSSxDQUFDSixXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7RUFFaEMsT0FBTztJQUNMTSxRQUFRLEVBQUU7TUFDUk4sV0FBVyxFQUFYQSxXQUFXO01BQ1hPLElBQUksRUFBRTtJQUNSLENBQUM7SUFDRDNCLFVBQVUsRUFBVkE7RUFDRixDQUFDO0FBQ0g7QUFFQSxTQUFTdUIsVUFBVUEsQ0FBQ0ssTUFBZ0IsRUFBRTNCLE1BQWMsRUFBRW9CLENBQVMsRUFBRTtFQUMvRCxJQUFNUSxTQUFTLEdBQUcsRUFBRSxHQUFHUixDQUFDLEdBQUcsRUFBRTtFQUM3QixJQUFNUyxTQUFTLEdBQUlDLElBQUksQ0FBQ0MsRUFBRSxHQUFHLEdBQUcsR0FBSUgsU0FBUztFQUU3QyxPQUFPLENBQUNELE1BQU0sQ0FBQyxDQUFDLENBQUMsR0FBRzNCLE1BQU0sR0FBRzhCLElBQUksQ0FBQ0UsR0FBRyxDQUFDSCxTQUFTLENBQUMsRUFBRUYsTUFBTSxDQUFDLENBQUMsQ0FBQyxHQUFHM0IsTUFBTSxHQUFHOEIsSUFBSSxDQUFDRyxHQUFHLENBQUNKLFNBQVMsQ0FBQyxDQUFDO0FBQzdGIiwiaWdub3JlTGlzdCI6W119