123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173 |
- import defined from "../Core/defined.js";
- import DeveloperError from "../Core/DeveloperError.js";
- import Event from "../Core/Event.js";
- import DataSource from "./DataSource.js";
- import EntityCluster from "./EntityCluster.js";
- import EntityCollection from "./EntityCollection.js";
- /**
- * A {@link DataSource} implementation which can be used to manually manage a group of entities.
- *
- * @alias CustomDataSource
- * @constructor
- *
- * @param {String} [name] A human-readable name for this instance.
- *
- * @example
- * const dataSource = new Cesium.CustomDataSource('myData');
- *
- * const entity = dataSource.entities.add({
- * position : Cesium.Cartesian3.fromDegrees(1, 2, 0),
- * billboard : {
- * image : 'image.png'
- * }
- * });
- *
- * viewer.dataSources.add(dataSource);
- */
- function CustomDataSource(name) {
- this._name = name;
- this._clock = undefined;
- this._changed = new Event();
- this._error = new Event();
- this._isLoading = false;
- this._loading = new Event();
- this._entityCollection = new EntityCollection(this);
- this._entityCluster = new EntityCluster();
- }
- Object.defineProperties(CustomDataSource.prototype, {
- /**
- * Gets or sets a human-readable name for this instance.
- * @memberof CustomDataSource.prototype
- * @type {String}
- */
- name: {
- get: function () {
- return this._name;
- },
- set: function (value) {
- if (this._name !== value) {
- this._name = value;
- this._changed.raiseEvent(this);
- }
- },
- },
- /**
- * Gets or sets the clock for this instance.
- * @memberof CustomDataSource.prototype
- * @type {DataSourceClock}
- */
- clock: {
- get: function () {
- return this._clock;
- },
- set: function (value) {
- if (this._clock !== value) {
- this._clock = value;
- this._changed.raiseEvent(this);
- }
- },
- },
- /**
- * Gets the collection of {@link Entity} instances.
- * @memberof CustomDataSource.prototype
- * @type {EntityCollection}
- */
- entities: {
- get: function () {
- return this._entityCollection;
- },
- },
- /**
- * Gets or sets whether the data source is currently loading data.
- * @memberof CustomDataSource.prototype
- * @type {Boolean}
- */
- isLoading: {
- get: function () {
- return this._isLoading;
- },
- set: function (value) {
- DataSource.setLoading(this, value);
- },
- },
- /**
- * Gets an event that will be raised when the underlying data changes.
- * @memberof CustomDataSource.prototype
- * @type {Event}
- */
- changedEvent: {
- get: function () {
- return this._changed;
- },
- },
- /**
- * Gets an event that will be raised if an error is encountered during processing.
- * @memberof CustomDataSource.prototype
- * @type {Event}
- */
- errorEvent: {
- get: function () {
- return this._error;
- },
- },
- /**
- * Gets an event that will be raised when the data source either starts or stops loading.
- * @memberof CustomDataSource.prototype
- * @type {Event}
- */
- loadingEvent: {
- get: function () {
- return this._loading;
- },
- },
- /**
- * Gets whether or not this data source should be displayed.
- * @memberof CustomDataSource.prototype
- * @type {Boolean}
- */
- show: {
- get: function () {
- return this._entityCollection.show;
- },
- set: function (value) {
- this._entityCollection.show = value;
- },
- },
- /**
- * Gets or sets the clustering options for this data source. This object can be shared between multiple data sources.
- *
- * @memberof CustomDataSource.prototype
- * @type {EntityCluster}
- */
- clustering: {
- get: function () {
- return this._entityCluster;
- },
- set: function (value) {
- //>>includeStart('debug', pragmas.debug);
- if (!defined(value)) {
- throw new DeveloperError("value must be defined.");
- }
- //>>includeEnd('debug');
- this._entityCluster = value;
- },
- },
- });
- /**
- * Updates the data source to the provided time. This function is optional and
- * is not required to be implemented. It is provided for data sources which
- * retrieve data based on the current animation time or scene state.
- * If implemented, update will be called by {@link DataSourceDisplay} once a frame.
- *
- * @param {JulianDate} time The simulation time.
- * @returns {Boolean} True if this data source is ready to be displayed at the provided time, false otherwise.
- */
- CustomDataSource.prototype.update = function (time) {
- return true;
- };
- export default CustomDataSource;
|