UNPKG

kepler.gl.geoiq

Version:

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

136 lines (110 loc) 14.2 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = exports.clusterVisConfigs = void 0; var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _aggregationLayer = _interopRequireDefault(require("../aggregation-layer")); var _deck = require("deck.gl"); var _clusterLayer = _interopRequireDefault(require("../../deckgl-layers/cluster-layer/cluster-layer")); var _defaultSettings = require("../../constants/default-settings"); var _clusterLayerIcon = _interopRequireDefault(require("./cluster-layer-icon")); function ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; } function _objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? ownKeys(Object(t), !0).forEach(function (r) { (0, _defineProperty2["default"])(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; } function _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = (0, _getPrototypeOf2["default"])(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = (0, _getPrototypeOf2["default"])(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return (0, _possibleConstructorReturn2["default"])(this, result); }; } function _isNativeReflectConstruct() { if (typeof Reflect === "undefined" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === "function") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } } var clusterVisConfigs = exports.clusterVisConfigs = { opacity: 'opacity', clusterRadius: 'clusterRadius', colorRange: 'colorRange', radiusRange: 'clusterRadiusRange', colorAggregation: 'aggregation' }; var ClusterLayer = exports["default"] = /*#__PURE__*/function (_AggregationLayer) { (0, _inherits2["default"])(ClusterLayer, _AggregationLayer); var _super = _createSuper(ClusterLayer); function ClusterLayer(props) { var _this; (0, _classCallCheck2["default"])(this, ClusterLayer); _this = _super.call(this, props); _this.registerVisConfig(clusterVisConfigs); return _this; } (0, _createClass2["default"])(ClusterLayer, [{ key: "type", get: function get() { return 'cluster'; } }, { key: "layerIcon", get: function get() { return _clusterLayerIcon["default"]; } }, { key: "visualChannels", get: function get() { return { color: { aggregation: 'colorAggregation', channelScaleType: _defaultSettings.CHANNEL_SCALES.colorAggr, defaultMeasure: 'Point Count', domain: 'colorDomain', field: 'colorField', key: 'color', property: 'color', range: 'colorRange', scale: 'colorScale' } }; } }, { key: "renderLayer", value: function renderLayer(_ref) { var data = _ref.data, idx = _ref.idx, objectHovered = _ref.objectHovered, mapState = _ref.mapState, interaction = _ref.interaction, layerCallbacks = _ref.layerCallbacks; var visConfig = this.config.visConfig; return [new _clusterLayer["default"](_objectSpread(_objectSpread({}, data), {}, { id: this.id, idx: idx, radiusScale: 1, radiusRange: visConfig.radiusRange, clusterRadius: visConfig.clusterRadius, colorRange: this.getColorRange(visConfig.colorRange), colorScale: this.config.colorScale, pickable: true, autoHighlight: true, highlightColor: this.config.highlightColor, opacity: visConfig.opacity, zoom: mapState.zoom, // parameters parameters: { depthTest: mapState.dragRotate }, // call back from layer after calculate clusters onSetColorDomain: layerCallbacks.onSetLayerDomain }))].concat((0, _toConsumableArray2["default"])(this.isLayerHovered(objectHovered) ? [new _deck.ScatterplotLayer({ id: "".concat(this.id, "-hovered"), data: [objectHovered.object], getFillColor: this.config.highlightColor, getRadius: function getRadius(d) { return d.radius; }, radiusScale: 1, pickable: false })] : [])); } }]); return ClusterLayer; }(_aggregationLayer["default"]); //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9sYXllcnMvY2x1c3Rlci1sYXllci9jbHVzdGVyLWxheWVyLmpzIl0sIm5hbWVzIjpbImNsdXN0ZXJWaXNDb25maWdzIiwib3BhY2l0eSIsImNsdXN0ZXJSYWRpdXMiLCJjb2xvclJhbmdlIiwicmFkaXVzUmFuZ2UiLCJjb2xvckFnZ3JlZ2F0aW9uIiwiQ2x1c3RlckxheWVyIiwicHJvcHMiLCJyZWdpc3RlclZpc0NvbmZpZyIsIkNsdXN0ZXJMYXllckljb24iLCJjb2xvciIsImFnZ3JlZ2F0aW9uIiwiY2hhbm5lbFNjYWxlVHlwZSIsIkNIQU5ORUxfU0NBTEVTIiwiY29sb3JBZ2dyIiwiZGVmYXVsdE1lYXN1cmUiLCJkb21haW4iLCJmaWVsZCIsImtleSIsInByb3BlcnR5IiwicmFuZ2UiLCJzY2FsZSIsImRhdGEiLCJpZHgiLCJvYmplY3RIb3ZlcmVkIiwibWFwU3RhdGUiLCJpbnRlcmFjdGlvbiIsImxheWVyQ2FsbGJhY2tzIiwidmlzQ29uZmlnIiwiY29uZmlnIiwiRGVja0dMQ2x1c3RlckxheWVyIiwiaWQiLCJyYWRpdXNTY2FsZSIsImdldENvbG9yUmFuZ2UiLCJjb2xvclNjYWxlIiwicGlja2FibGUiLCJhdXRvSGlnaGxpZ2h0IiwiaGlnaGxpZ2h0Q29sb3IiLCJ6b29tIiwicGFyYW1ldGVycyIsImRlcHRoVGVzdCIsImRyYWdSb3RhdGUiLCJvblNldENvbG9yRG9tYWluIiwib25TZXRMYXllckRvbWFpbiIsImlzTGF5ZXJIb3ZlcmVkIiwiU2NhdHRlcnBsb3RMYXllciIsIm9iamVjdCIsImdldEZpbGxDb2xvciIsImdldFJhZGl1cyIsImQiLCJyYWRpdXMiLCJBZ2dyZWdhdGlvbkxheWVyIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQW9CQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7OztBQUVPLElBQU1BLGlCQUFpQiwrQkFBRztBQUMvQkMsRUFBQUEsT0FBTyxFQUFFLFNBRHNCO0FB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Q0FERixDQURFLEdBV0YsRUFqQ0o7QUFtQ0Q7OztFQTNFdUNnQiw0QiIsInNvdXJjZXNDb250ZW50IjpbIi8vIENvcHlyaWdodCAoYykgMjAyMyBVYmVyIFRlY2hub2xvZ2llcywgSW5jLlxuLy9cbi8vIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhIGNvcHlcbi8vIG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlIFwiU29mdHdhcmVcIiksIHRvIGRlYWxcbi8vIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHNcbi8vIHRvIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGxcbi8vIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpc1xuLy8gZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczpcbi8vXG4vLyBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpblxuLy8gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbCBwb3J0aW9ucyBvZiB0aGUgU29mdHdhcmUuXG4vL1xuLy8gVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEIFwiQVMgSVNcIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUlxuLy8gSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksXG4vLyBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEVcbi8vIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVJcbi8vIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sXG4vLyBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOXG4vLyBUSEUgU09GVFdBUkUuXG5cbmltcG9ydCBBZ2dyZWdhdGlvbkxheWVyIGZyb20gJy4uL2FnZ3JlZ2F0aW9uLWxheWVyJztcbmltcG9ydCB7U2NhdHRlcnBsb3RMYXllcn0gZnJvbSAnZGVjay5nbCc7XG5cbmltcG9ydCBEZWNrR0xDbHVzdGVyTGF5ZXIgZnJvbSAnZGVja2dsLWxheWVycy9jbHVzdGVyLWxheWVyL2NsdXN0ZXItbGF5ZXInO1xuaW1wb3J0IHtDSEFOTkVMX1NDQUxFU30gZnJvbSAnY29uc3RhbnRzL2RlZmF1bHQtc2V0dGluZ3MnO1xuaW1wb3J0IENsdXN0ZXJMYXllckljb24gZnJvbSAnLi9jbHVzdGVyLWxheWVyLWljb24nO1xuXG5leHBvcnQgY29uc3QgY2x1c3RlclZpc0NvbmZpZ3MgPSB7XG4gIG9wYWNpdHk6ICdvcGFjaXR5JyxcbiAgY2x1c3RlclJhZGl1czogJ2NsdXN0ZXJSYWRpdXMnLFxuICBjb2xvclJhbmdlOiAnY29sb3JSYW5nZScsXG4gIHJhZGl1c1JhbmdlOiAnY2x1c3RlclJhZGl1c1JhbmdlJyxcbiAgY29sb3JBZ2dyZWdhdGlvbjogJ2FnZ3JlZ2F0aW9uJ1xufTtcblxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgQ2x1c3RlckxheWVyIGV4dGVuZHMgQWdncmVnYXRpb25MYXllciB7XG4gIGNvbnN0cnVjdG9yKHByb3BzKSB7XG4gICAgc3VwZXIocHJvcHMpO1xuICAgIHRoaXMucmVnaXN0ZXJWaXNDb25maWcoY2x1c3RlclZpc0NvbmZpZ3MpO1xuICB9XG5cbiAgZ2V0IHR5cGUoKSB7XG4gICAgcmV0dXJuICdjbHVzdGVyJztcbiAgfVxuXG4gIGdldCBsYXllckljb24oKSB7XG4gICAgcmV0dXJuIENsdXN0ZXJMYXllckljb247XG4gIH1cblxuICBnZXQgdmlzdWFsQ2hhbm5lbHMoKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIGNvbG9yOiB7XG4gICAgICAgIGFnZ3JlZ2F0aW9uOiAnY29sb3JBZ2dyZWdhdGlvbicsXG4gICAgICAgIGNoYW5uZWxTY2FsZVR5cGU6IENIQU5ORUxfU0NBTEVTLmNvbG9yQWdncixcbiAgICAgICAgZGVmYXVsdE1lYXN1cmU6ICdQb2ludCBDb3VudCcsXG4gICAgICAgIGRvbWFpbjogJ2NvbG9yRG9tYWluJyxcbiAgICAgICAgZmllbGQ6ICdjb2xvckZpZWxkJyxcbiAgICAgICAga2V5OiAnY29sb3InLFxuICAgICAgICBwcm9wZXJ0eTogJ2NvbG9yJyxcbiAgICAgICAgcmFuZ2U6ICdjb2xvclJhbmdlJyxcbiAgICAgICAgc2NhbGU6ICdjb2xvclNjYWxlJ1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICByZW5kZXJMYXllcih7XG4gICAgZGF0YSxcbiAgICBpZHgsXG4gICAgb2JqZWN0SG92ZXJlZCxcbiAgICBtYXBTdGF0ZSxcbiAgICBpbnRlcmFjdGlvbixcbiAgICBsYXllckNhbGxiYWNrc1xuICB9KSB7XG4gICAgY29uc3Qge3Zpc0NvbmZpZ30gPSB0aGlzLmNvbmZpZztcblxuICAgIHJldHVybiBbXG4gICAgICBuZXcgRGVja0dMQ2x1c3RlckxheWVyKHtcbiAgICAgICAgLi4uZGF0YSxcbiAgICAgICAgaWQ6IHRoaXMuaWQsXG4gICAgICAgIGlkeCxcbiAgICAgICAgcmFkaXVzU2NhbGU6IDEsXG4gICAgICAgIHJhZGl1c1JhbmdlOiB2aXNDb25maWcucmFkaXVzUmFuZ2UsXG4gICAgICAgIGNsdXN0ZXJSYWRpdXM6IHZpc0NvbmZpZy5jbHVzdGVyUmFkaXVzLFxuICAgICAgICBjb2xvclJhbmdlOiB0aGlzLmdldENvbG9yUmFuZ2UodmlzQ29uZmlnLmNvbG9yUmFuZ2UpLFxuICAgICAgICBjb2xvclNjYWxlOiB0aGlzLmNvbmZpZy5jb2xvclNjYWxlLFxuICAgICAgICBwaWNrYWJsZTogdHJ1ZSxcbiAgICAgICAgYXV0b0hpZ2hsaWdodDogdHJ1ZSxcbiAgICAgICAgaGlnaGxpZ2h0Q29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yLFxuICAgICAgICBvcGFjaXR5OiB2aXNDb25maWcub3BhY2l0eSxcbiAgICAgICAgem9vbTogbWFwU3RhdGUuem9vbSxcbiAgICAgICAgLy8gcGFyYW1ldGVyc1xuICAgICAgICBwYXJhbWV0ZXJzOiB7ZGVwdGhUZXN0OiBtYXBTdGF0ZS5kcmFnUm90YXRlfSxcblxuICAgICAgICAvLyBjYWxsIGJhY2sgZnJvbSBsYXllciBhZnRlciBjYWxjdWxhdGUgY2x1c3RlcnNcbiAgICAgICAgb25TZXRDb2xvckRvbWFpbjogbGF5ZXJDYWxsYmFja3Mub25TZXRMYXllckRvbWFpblxuICAgICAgfSksXG4gICAgICAvLyBob3ZlciBsYXllclxuICAgICAgLi4uKHRoaXMuaXNMYXllckhvdmVyZWQob2JqZWN0SG92ZXJlZClcbiAgICAgID8gW1xuICAgICAgICAgIG5ldyBTY2F0dGVycGxvdExheWVyKHtcbiAgICAgICAgICAgIGlkOiBgJHt0aGlzLmlkfS1ob3ZlcmVkYCxcbiAgICAgICAgICAgIGRhdGE6IFtvYmplY3RIb3ZlcmVkLm9iamVjdF0sXG4gICAgICAgICAgICBnZXRGaWxsQ29sb3I6IHRoaXMuY29uZmlnLmhpZ2hsaWdodENvbG9yLFxuICAgICAgICAgICAgZ2V0UmFkaXVzOiBkID0+IGQucmFkaXVzLFxuICAgICAgICAgICAgcmFkaXVzU2NhbGU6IDEsXG4gICAgICAgICAgICBwaWNrYWJsZTogZmFsc2VcbiAgICAgICAgICB9KVxuICAgICAgICBdXG4gICAgICA6IFtdKVxuICAgIF07XG4gIH1cbn1cbiJdfQ==