itowns
Version:
A JS/WebGL framework for 3D geospatial data visualization
124 lines (100 loc) • 4.01 kB
JavaScript
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.InfoTiledGeometryLayer = exports["default"] = void 0;
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn"));
var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _Extent = _interopRequireDefault(require("../Core/Geographic/Extent"));
var InfoLayer =
/*#__PURE__*/
function () {
function InfoLayer(layer) {
(0, _classCallCheck2["default"])(this, InfoLayer);
this.layer = layer;
} // eslint-disable-next-line
(0, _createClass2["default"])(InfoLayer, [{
key: "clear",
value: function clear() {} // eslint-disable-next-line
}, {
key: "update",
value: function update() {}
}]);
return InfoLayer;
}();
/**
* InfoTiledGeometryLayer that provides some states layer informations. These
* informations are displayed tiles, displayed {@link ColorLayer} and {@link
* ElevationLayer} and extent of displayed tiles.
*
* @class InfoTiledGeometryLayer
*
* @property {object} displayed
* @property {Layer[]} displayed.layers - Displayed {@link ColorLayer} and {@link ElevationLayer}.
* @property {Extent} displayed.extent - {@link Extent} of displayed tiles.
* @property {Set} displayed.tiles - Set of displayed tiles.
*/
exports["default"] = InfoLayer;
var InfoTiledGeometryLayer =
/*#__PURE__*/
function (_InfoLayer) {
(0, _inherits2["default"])(InfoTiledGeometryLayer, _InfoLayer);
function InfoTiledGeometryLayer(tiledGeometryLayer) {
var _this;
(0, _classCallCheck2["default"])(this, InfoTiledGeometryLayer);
_this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(InfoTiledGeometryLayer).call(this, tiledGeometryLayer));
_this.displayed = {
tiles: new Set()
};
Object.defineProperty(_this.displayed, 'layers', {
get: function get() {
var layers = [];
_this.displayed.tiles.forEach(function (tile) {
var m = tile.material;
layers = (0, _toConsumableArray2["default"])(new Set([].concat((0, _toConsumableArray2["default"])(layers), (0, _toConsumableArray2["default"])(m.colorLayerIds.filter(function (id) {
return m.getLayer(id);
})), (0, _toConsumableArray2["default"])(m.elevationLayerIds))));
});
return _this.layer.attachedLayers.filter(function (l) {
return layers.includes(l.id);
});
}
});
Object.defineProperty(_this.displayed, 'extent', {
get: function get() {
var extent = new _Extent["default"](_this.layer.extent.crs, Infinity, -Infinity, Infinity, -Infinity);
extent.min = +Infinity;
extent.max = -Infinity;
_this.displayed.tiles.forEach(function (tile) {
extent.union(tile.extent);
extent.min = Math.min(tile.obb.z.min, extent.min);
extent.max = Math.max(tile.obb.z.max, extent.max);
});
return extent;
}
});
return _this;
}
(0, _createClass2["default"])(InfoTiledGeometryLayer, [{
key: "clear",
value: function clear() {
this.displayed.tiles.clear();
}
}, {
key: "update",
value: function update(tile) {
if (tile.material.visible) {
this.displayed.tiles.add(tile);
} else {
this.displayed.tiles["delete"](tile);
}
}
}]);
return InfoTiledGeometryLayer;
}(InfoLayer);
exports.InfoTiledGeometryLayer = InfoTiledGeometryLayer;
;