UNPKG

kepler.gl.geoiq

Version:

kepler.gl is a webgl based application to visualize large scale location data in the browser

60 lines (52 loc) 7.29 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.hexagonToPolygonGeo = hexagonToPolygonGeo; var _deck = require("deck.gl"); // Copyright (c) 2019 Uber Technologies, Inc. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in // all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN // THE SOFTWARE. function hexagonToPolygonGeo(_ref, properties, radius, mapState) { var object = _ref.object; var viewport = new _deck.WebMercatorViewport(mapState); var screenCenter = viewport.projectFlat(object.centroid); var _viewport$getDistance = viewport.getDistanceScales(), pixelsPerMeter = _viewport$getDistance.pixelsPerMeter; var pixRadius = radius * pixelsPerMeter[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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvaGV4YWdvbi1sYXllci9oZXhhZ29uLXV0aWxzLmpzIl0sIm5hbWVzIjpbImhleGFnb25Ub1BvbHlnb25HZW8iLCJwcm9wZXJ0aWVzIiwicmFkaXVzIiwibWFwU3RhdGUiLCJvYmplY3QiLCJ2aWV3cG9ydCIsIldlYk1lcmNhdG9yVmlld3BvcnQiLCJzY3JlZW5DZW50ZXIiLCJwcm9qZWN0RmxhdCIsImNlbnRyb2lkIiwiZ2V0RGlzdGFuY2VTY2FsZXMiLCJwaXhlbHNQZXJNZXRlciIsInBpeFJhZGl1cyIsImNvb3JkaW5hdGVzIiwiaSIsInZlcnRleCIsImhleF9jb3JuZXIiLCJwdXNoIiwidW5wcm9qZWN0RmxhdCIsImdlb21ldHJ5IiwidHlwZSIsImNlbnRlciIsImFuZ2xlX2RlZyIsImFuZ2xlX3JhZCIsIk1hdGgiLCJQSSIsImNvcyIsInNpbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQW9CQTs7QUFwQkE7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFJTyxTQUFTQSxtQkFBVCxPQUF1Q0MsVUFBdkMsRUFBbURDLE1BQW5ELEVBQTJEQyxRQUEzRCxFQUFxRTtBQUFBLE1BQXZDQyxNQUF1QyxRQUF2Q0EsTUFBdUM7QUFDMUUsTUFBTUMsUUFBUSxHQUFHLElBQUlDLHlCQUFKLENBQXdCSCxRQUF4QixDQUFqQjtBQUVBLE1BQU1JLFlBQVksR0FBR0YsUUFBUSxDQUFDRyxXQUFULENBQXFCSixNQUFNLENBQUNLLFFBQTVCLENBQXJCOztBQUgwRSw4QkFJakRKLFFBQVEsQ0FBQ0ssaUJBQVQsRUFKaUQ7QUFBQSxNQUluRUMsY0FKbUUseUJBSW5FQSxjQUptRTs7QUFLMUUsTUFBTUMsU0FBUyxHQUFHVixNQUFNLEdBQUdTLGNBQWMsQ0FBQyxDQUFELENBQXpDO0FBRUEsTUFBTUUsV0FBVyxHQUFHLEVBQXBCOztBQUVBLE9BQUssSUFBSUMsQ0FBQyxHQUFHLENBQWIsRUFBZ0JBLENBQUMsR0FBRyxDQUFwQixFQUF1QkEsQ0FBQyxFQUF4QixFQUE0QjtBQUMxQixRQUFNQyxNQUFNLEdBQUdDLFVBQVUsQ0FBQ1QsWUFBRCxFQUFlSyxTQUFmLEVBQTBCRSxDQUExQixDQUF6QjtBQUNBRCxJQUFBQSxXQUFXLENBQUNJLElBQVosQ0FBaUJaLFFBQVEsQ0FBQ2EsYUFBVCxDQUF1QkgsTUFBdkIsQ0FBakI7QUFDRDs7QUFFREYsRUFBQUEsV0FBVyxDQUFDSSxJQUFaLENBQWlCSixXQUFXLENBQUMsQ0FBRCxDQUE1QjtBQUVBLFNBQU87QUFDTE0sSUFBQUEsUUFBUSxFQUFFO0FBQ1JOLE1BQUFBLFdBQVcsRUFBWEEsV0FEUTtBQUVSTyxNQUFBQSxJQUFJLEVBQUU7QUFGRSxLQURMO0FBS0xuQixJQUFBQSxVQUFVLEVBQVZBO0FBTEssR0FBUDtBQU9EOztBQUVELFNBQVNlLFVBQVQsQ0FBb0JLLE1BQXBCLEVBQTRCbkIsTUFBNUIsRUFBb0NZLENBQXBDLEVBQXVDO0FBQ3JDLE1BQU1RLFNBQVMsR0FBRyxLQUFLUixDQUFMLEdBQVMsRUFBM0I7QUFDQSxNQUFNUyxTQUFTLEdBQUdDLElBQUksQ0FBQ0MsRUFBTCxHQUFVLEdBQVYsR0FBZ0JILFNBQWxDO0FBRUEsU0FBTyxDQUNMRCxNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVluQixNQUFNLEdBQUdzQixJQUFJLENBQUNFLEdBQUwsQ0FBU0gsU0FBVCxDQURoQixFQUVMRixNQUFNLENBQUMsQ0FBRCxDQUFOLEdBQVluQixNQUFNLEdBQUdzQixJQUFJLENBQUNHLEdBQUwsQ0FBU0osU0FBVCxDQUZoQixDQUFQO0FBSUQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBDb3B5cmlnaHQgKGMpIDIwMTkgVWJlciBUZWNobm9sb2dpZXMsIEluYy5cbi8vXG4vLyBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYSBjb3B5XG4vLyBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSBcIlNvZnR3YXJlXCIpLCB0byBkZWFsXG4vLyBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbiB0aGUgcmlnaHRzXG4vLyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsIGFuZC9vciBzZWxsXG4vLyBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXNcbi8vIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6XG4vL1xuLy8gVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW5cbi8vIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLlxuLy9cbi8vIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCBcIkFTIElTXCIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1Jcbi8vIElNUExJRUQsIElOQ0xVRElORyBCVVQgTk9UIExJTUlURUQgVE8gVEhFIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZLFxuLy8gRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5EIE5PTklORlJJTkdFTUVOVC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFXG4vLyBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSXG4vLyBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4gQUNUSU9OIE9GIENPTlRSQUNULCBUT1JUIE9SIE9USEVSV0lTRSwgQVJJU0lORyBGUk9NLFxuLy8gT1VUIE9GIE9SIElOIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTlxuLy8gVEhFIFNPRlRXQVJFLlxuXG5pbXBvcnQge1dlYk1lcmNhdG9yVmlld3BvcnR9IGZyb20gJ2RlY2suZ2wnO1xuXG5leHBvcnQgZnVuY3Rpb24gaGV4YWdvblRvUG9seWdvbkdlbyh7b2JqZWN0fSwgcHJvcGVydGllcywgcmFkaXVzLCBtYXBTdGF0ZSkge1xuICBjb25zdCB2aWV3cG9ydCA9IG5ldyBXZWJNZXJjYXRvclZpZXdwb3J0KG1hcFN0YXRlKTtcblxuICBjb25zdCBzY3JlZW5DZW50ZXIgPSB2aWV3cG9ydC5wcm9qZWN0RmxhdChvYmplY3QuY2VudHJvaWQpO1xuICBjb25zdCB7cGl4ZWxzUGVyTWV0ZXJ9ID0gdmlld3BvcnQuZ2V0RGlzdGFuY2VTY2FsZXMoKTtcbiAgY29uc3QgcGl4UmFkaXVzID0gcmFkaXVzICogcGl4ZWxzUGVyTWV0ZXJbMF07XG5cbiAgY29uc3QgY29vcmRpbmF0ZXMgPSBbXTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IDY7IGkrKykge1xuICAgIGNvbnN0IHZlcnRleCA9IGhleF9jb3JuZXIoc2NyZWVuQ2VudGVyLCBwaXhSYWRpdXMsIGkpO1xuICAgIGNvb3JkaW5hdGVzLnB1c2godmlld3BvcnQudW5wcm9qZWN0RmxhdCh2ZXJ0ZXgpKTtcbiAgfVxuXG4gIGNvb3JkaW5hdGVzLnB1c2goY29vcmRpbmF0ZXNbMF0pO1xuXG4gIHJldHVybiB7XG4gICAgZ2VvbWV0cnk6IHtcbiAgICAgIGNvb3JkaW5hdGVzLFxuICAgICAgdHlwZTogJ0xpbmVTdHJpbmcnXG4gICAgfSxcbiAgICBwcm9wZXJ0aWVzXG4gIH07XG59XG5cbmZ1bmN0aW9uIGhleF9jb3JuZXIoY2VudGVyLCByYWRpdXMsIGkpIHtcbiAgY29uc3QgYW5nbGVfZGVnID0gNjAgKiBpICsgMzA7XG4gIGNvbnN0IGFuZ2xlX3JhZCA9IE1hdGguUEkgLyAxODAgKiBhbmdsZV9kZWc7XG5cbiAgcmV0dXJuIFtcbiAgICBjZW50ZXJbMF0gKyByYWRpdXMgKiBNYXRoLmNvcyhhbmdsZV9yYWQpLFxuICAgIGNlbnRlclsxXSArIHJhZGl1cyAqIE1hdGguc2luKGFuZ2xlX3JhZClcbiAgXTtcbn1cbiJdfQ==