"use strict";
/*global require*/
var GlobeOrMap = require("./GlobeOrMap");
var inherit = require("../Core/inherit");
var Rectangle = require("terriajs-cesium/Source/Core/Rectangle").default;
var when = require("terriajs-cesium/Source/ThirdParty/when").default;
/**
* The base class for map/globe viewers.
*
* @constructor
* @alias GlobeOrMap
*
* @see Cesium
* @see Leaflet
*/
var NoViewer = function(terria) {
GlobeOrMap.call(this, terria);
};
inherit(GlobeOrMap, NoViewer);
NoViewer.prototype.destroy = function() {};
NoViewer.prototype.isDestroyed = function() {
return false;
};
/**
* Gets the current extent of the camera. This may be approximate if the viewer does not have a strictly rectangular view.
* @return {Rectangle} The current visible extent.
*/
NoViewer.prototype.getCurrentExtent = function() {
return Rectangle.MAX_VALUE;
};
/**
* Gets the current container element.
* @return {Element} The current container element.
*/
NoViewer.prototype.getContainer = function() {
return undefined;
};
/**
* Zooms to a specified camera view or extent with a smooth flight animation.
*
* @param {CameraView|Rectangle} viewOrExtent The view or extent to which to zoom.
* @param {Number} [flightDurationSeconds=3.0] The length of the flight animation in seconds.
*/
NoViewer.prototype.zoomTo = function(viewOrExtent, flightDurationSeconds) {
this.terria.initialView = viewOrExtent;
};
/**
* Captures a screenshot of the map.
* @return {Promise} A promise that resolves to a data URL when the screenshot is ready.
*/
NoViewer.prototype.captureScreenshot = function() {
return when.reject();
};
/**
* Notifies the viewer that a repaint is required.
*/
NoViewer.prototype.notifyRepaintRequired = function() {};
/**
* Computes the screen position of a given world position.
* @param {Cartesian3} position The world position in Earth-centered Fixed coordinates.
* @param {Cartesian2} [result] The instance to which to copy the result.
* @return {Cartesian2} The screen position, or undefined if the position is not on the screen.
*/
NoViewer.prototype.computePositionOnScreen = function(position, result) {
return undefined;
};
/**
* Adds an attribution to the globe or map.
* @param {Credit} attribution The attribution to add.
*/
NoViewer.prototype.addAttribution = function(attribution) {};
/**
* Removes an attribution from the globe or map.
* @param {Credit} attribution The attribution to remove.
*/
NoViewer.prototype.removeAttribution = function(attribution) {};
/**
* Perform any updates to the order of layers required by raise and lower,
* but after the items have been reordered.
* This allows for the possibility that raise and lower do nothing, and instead we
* call updateLayerOrder
*/
NoViewer.prototype.updateLayerOrderAfterReorder = function() {};
/**
* Raise an item's level in the viewer
* This does not check that index is valid
* @param {Number} index The index of the item to raise
*/
NoViewer.prototype.raise = function(index) {};
/**
* Lower an item's level in the viewer
* This does not check that index is valid
* @param {Number} index The index of the item to lower
*/
NoViewer.prototype.lower = function(index) {};
/**
* Lowers this imagery layer to the bottom, underneath all other layers. If this item is not enabled or not shown,
* this method does nothing.
* @param {CatalogItem} item The item to lower to the bottom (usually a basemap)
*/
NoViewer.prototype.lowerToBottom = function(item) {};
NoViewer.prototype.addImageryProvider = function(options) {};
NoViewer.prototype.removeImageryLayer = function(options) {};
NoViewer.prototype.showImageryLayer = function(options) {};
NoViewer.prototype.hideImageryLayer = function(options) {};
NoViewer.prototype.isImageryLayerShown = function(options) {
return false;
};
module.exports = NoViewer;