/** * A single tile in a {@link QuadtreePrimitive}. * * @alias QuadtreeTile * @constructor * @private * * @param {Number} options.level The level of the tile in the quadtree. * @param {Number} options.x The X coordinate of the tile in the quadtree. 0 is the westernmost tile. * @param {Number} options.y The Y coordinate of the tile in the quadtree. 0 is the northernmost tile. * @param {TilingScheme} options.tilingScheme The tiling scheme in which this tile exists. * @param {QuadtreeTile} [options.parent] This tile's parent, or undefined if this is a root tile. */
function QuadtreeTile(options) { //>>includeStart('debug', pragmas.debug); if (!defined(options)) { throw new DeveloperError("options is required."); } if (!defined(options.x)) { throw new DeveloperError("options.x is required."); } else if (!defined(options.y)) { throw new DeveloperError("options.y is required."); } else if (options.x < 0 || options.y < 0) { throw new DeveloperError( "options.x and options.y must be greater than or equal to zero." ); } if (!defined(options.level)) { throw new DeveloperError( "options.level is required and must be greater than or equal to zero." ); } if (!defined(options.tilingScheme)) { throw new DeveloperError("options.tilingScheme is required."); } //>>includeEnd('debug'); this._tilingScheme = options.tilingScheme; this._x = options.x; this._y = options.y; this._level = options.level; this._parent = options.parent; this._rectangle = this._tilingScheme.tileXYToRectangle( this._x, this._y, this._level ); this._southwestChild = undefined; this._southeastChild = undefined; this._northwestChild = undefined; this._northeastChild = undefined; // TileReplacementQueue gets/sets these private properties. this.replacementPrevious = undefined; this.replacementNext = undefined; // The distance from the camera to this tile, updated when the tile is selected // for rendering. We can get rid of this if we have a better way to sort by // distance - for example, by using the natural ordering of a quadtree. // QuadtreePrimitive gets/sets this private property. this._distance = 0.0; this._loadPriority = 0.0; this._customData = []; this._frameUpdated = undefined; this._lastSelectionResult = TileSelectionResult.NONE; this._lastSelectionResultFrame = undefined; this._loadedCallbacks = {}; /** * Gets or sets the current state of the tile in the tile load pipeline. * @type {QuadtreeTileLoadState} * @default {@link QuadtreeTileLoadState.START} */ this.state = QuadtreeTileLoadState.START; /** * Gets or sets a value indicating whether or not the tile is currently renderable. * @type {Boolean} * @default false */ this.renderable = false; /** * Gets or set a value indicating whether or not the tile was entirely upsampled from its * parent tile. If all four children of a parent tile were upsampled from the parent, * we will render the parent instead of the children even if the LOD indicates that * the children would be preferable. * @type {Boolean} * @default false */ this.upsampledFromParent = false; /** * Gets or sets the additional data associated with this tile. The exact content is specific to the * {@link QuadtreeTileProvider}. * @type {Object} * @default undefined */ this.data = undefined; }
QuadtreeTile(四叉树切片)的构造函数。