123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641 |
- define([
- '../../Core/buildModuleUrl',
- '../../Core/Cartesian3',
- '../../Core/Clock',
- '../../Core/Credit',
- '../../Core/defaultValue',
- '../../Core/defined',
- '../../Core/defineProperties',
- '../../Core/destroyObject',
- '../../Core/DeveloperError',
- '../../Core/Ellipsoid',
- '../../Core/formatError',
- '../../Core/requestAnimationFrame',
- '../../Core/ScreenSpaceEventHandler',
- '../../Scene/BingMapsImageryProvider',
- '../../Scene/Globe',
- '../../Scene/Moon',
- '../../Scene/Scene',
- '../../Scene/SceneMode',
- '../../Scene/SkyAtmosphere',
- '../../Scene/SkyBox',
- '../../Scene/Sun',
- '../getElement'
- ], function(
- buildModuleUrl,
- Cartesian3,
- Clock,
- Credit,
- defaultValue,
- defined,
- defineProperties,
- destroyObject,
- DeveloperError,
- Ellipsoid,
- formatError,
- requestAnimationFrame,
- ScreenSpaceEventHandler,
- BingMapsImageryProvider,
- Globe,
- Moon,
- Scene,
- SceneMode,
- SkyAtmosphere,
- SkyBox,
- Sun,
- getElement) {
- "use strict";
- function getDefaultSkyBoxUrl(suffix) {
- return buildModuleUrl('Assets/Textures/SkyBox/tycho2t3_80_' + suffix + '.jpg');
- }
- function startRenderLoop(widget) {
- widget._renderLoopRunning = true;
- var lastFrameTime = 0;
- function render(frameTime) {
- if (widget.isDestroyed()) {
- return;
- }
- if (widget._useDefaultRenderLoop) {
- try {
- var targetFrameRate = widget._targetFrameRate;
- if (!defined(targetFrameRate)) {
- widget.resize();
- widget.render();
- requestAnimationFrame(render);
- } else {
- var interval = 1000.0 / targetFrameRate;
- var delta = frameTime - lastFrameTime;
- if (delta > interval) {
- widget.resize();
- widget.render();
- lastFrameTime = frameTime - (delta % interval);
- }
- requestAnimationFrame(render);
- }
- } catch (error) {
- widget._useDefaultRenderLoop = false;
- widget._renderLoopRunning = false;
- if (widget._showRenderLoopErrors) {
- var title = 'An error occurred while rendering. Rendering has stopped.';
- widget.showErrorPanel(title, undefined, error);
- }
- }
- } else {
- widget._renderLoopRunning = false;
- }
- }
- requestAnimationFrame(render);
- }
- function configureCanvasSize(widget) {
- var canvas = widget._canvas;
- var width = canvas.clientWidth;
- var height = canvas.clientHeight;
- var zoomFactor = defaultValue(window.devicePixelRatio, 1.0) * widget._resolutionScale;
- widget._canvasWidth = width;
- widget._canvasHeight = height;
- width *= zoomFactor;
- height *= zoomFactor;
- canvas.width = width;
- canvas.height = height;
- widget._canRender = width !== 0 && height !== 0;
- }
- function configureCameraFrustum(widget) {
- var canvas = widget._canvas;
- var width = canvas.width;
- var height = canvas.height;
- if (width !== 0 && height !== 0) {
- var frustum = widget._scene.camera.frustum;
- if (defined(frustum.aspectRatio)) {
- frustum.aspectRatio = width / height;
- } else {
- frustum.top = frustum.right * (height / width);
- frustum.bottom = -frustum.top;
- }
- }
- }
- var cesiumLogoData = 'data:image/png;base64,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';
-
- var CesiumWidget = function(container, options) {
-
- if (!defined(container)) {
- throw new DeveloperError('container is required.');
- }
-
- container = getElement(container);
- options = defaultValue(options, {});
-
- var element = document.createElement('div');
- element.className = 'cesium-widget';
- container.appendChild(element);
- var canvas = document.createElement('canvas');
- canvas.oncontextmenu = function() {
- return false;
- };
- canvas.onselectstart = function() {
- return false;
- };
- element.appendChild(canvas);
- var creditContainer = document.createElement('div');
- creditContainer.className = 'cesium-widget-credits';
- var creditContainerContainer = defined(options.creditContainer) ? getElement(options.creditContainer) : element;
- creditContainerContainer.appendChild(creditContainer);
- this._element = element;
- this._container = container;
- this._canvas = canvas;
- this._canvasWidth = 0;
- this._canvasHeight = 0;
- this._creditContainer = creditContainer;
- this._canRender = false;
- this._renderLoopRunning = false;
- this._showRenderLoopErrors = defaultValue(options.showRenderLoopErrors, true);
- this._resolutionScale = 1.0;
- this._forceResize = false;
- this._clock = defined(options.clock) ? options.clock : new Clock();
- configureCanvasSize(this);
- try {
- var scene = new Scene({
- canvas : canvas,
- contextOptions : options.contextOptions,
- creditContainer : creditContainer,
- mapProjection : options.mapProjection,
- orderIndependentTranslucency : options.orderIndependentTranslucency,
- scene3DOnly : defaultValue(options.scene3DOnly, false)
- });
- this._scene = scene;
- scene.camera.constrainedAxis = Cartesian3.UNIT_Z;
- configureCameraFrustum(this);
- var ellipsoid = Ellipsoid.WGS84;
- var creditDisplay = scene.frameState.creditDisplay;
- var cesiumCredit = new Credit('Cesium', cesiumLogoData, 'http://cesiumjs.org/');
- creditDisplay.addDefaultCredit(cesiumCredit);
- var globe = new Globe(ellipsoid);
- this._globe = globe;
- scene.globe = globe;
- var skyBox = options.skyBox;
- if (!defined(skyBox)) {
- skyBox = new SkyBox({
- sources : {
- positiveX : getDefaultSkyBoxUrl('px'),
- negativeX : getDefaultSkyBoxUrl('mx'),
- positiveY : getDefaultSkyBoxUrl('py'),
- negativeY : getDefaultSkyBoxUrl('my'),
- positiveZ : getDefaultSkyBoxUrl('pz'),
- negativeZ : getDefaultSkyBoxUrl('mz')
- }
- });
- }
- scene.skyBox = skyBox;
- scene.skyAtmosphere = new SkyAtmosphere(ellipsoid);
- scene.sun = new Sun();
- scene.moon = new Moon();
-
- var imageryProvider = options.imageryProvider;
- if (!defined(imageryProvider)) {
- imageryProvider = new BingMapsImageryProvider({
- url : '//dev.virtualearth.net'
- });
- }
- if (imageryProvider !== false) {
- scene.imageryLayers.addImageryProvider(imageryProvider);
- }
-
- if (defined(options.terrainProvider)) {
- scene.terrainProvider = options.terrainProvider;
- }
- this._screenSpaceEventHandler = new ScreenSpaceEventHandler(canvas);
- if (defined(options.sceneMode)) {
- if (options.sceneMode === SceneMode.SCENE2D) {
- this._scene.morphTo2D(0);
- }
- if (options.sceneMode === SceneMode.COLUMBUS_VIEW) {
- this._scene.morphToColumbusView(0);
- }
- }
- this._useDefaultRenderLoop = undefined;
- this.useDefaultRenderLoop = defaultValue(options.useDefaultRenderLoop, true);
- this._targetFrameRate = undefined;
- this.targetFrameRate = options.targetFrameRate;
- var that = this;
- scene.renderError.addEventListener(function(scene, error) {
- that._useDefaultRenderLoop = false;
- that._renderLoopRunning = false;
- if (that._showRenderLoopErrors) {
- var title = 'An error occurred while rendering. Rendering has stopped.';
- that.showErrorPanel(title, undefined, error);
- }
- });
- } catch (error) {
- var title = 'Error constructing CesiumWidget.';
- var message = 'Visit <a href="http://get.webgl.org">http://get.webgl.org</a> to verify that your web browser and hardware support WebGL. Consider trying a different web browser or updating your video drivers. Detailed error information is below:';
- this.showErrorPanel(title, message, error);
- throw error;
- }
- };
- defineProperties(CesiumWidget.prototype, {
-
- container : {
- get : function() {
- return this._container;
- }
- },
-
- canvas : {
- get : function() {
- return this._canvas;
- }
- },
-
- creditContainer: {
- get : function() {
- return this._creditContainer;
- }
- },
-
- scene : {
- get : function() {
- return this._scene;
- }
- },
-
- imageryLayers : {
- get : function() {
- return this._scene.imageryLayers;
- }
- },
-
- terrainProvider : {
- get : function() {
- return this._scene.terrainProvider;
- },
- set : function(terrainProvider) {
- this._scene.terrainProvider = terrainProvider;
- }
- },
-
- camera : {
- get : function() {
- return this._scene.camera;
- }
- },
-
- clock : {
- get : function() {
- return this._clock;
- }
- },
-
- screenSpaceEventHandler : {
- get : function() {
- return this._screenSpaceEventHandler;
- }
- },
-
- targetFrameRate : {
- get : function() {
- return this._targetFrameRate;
- },
- set : function(value) {
- if (value <= 0) {
- throw new DeveloperError('targetFrameRate must be greater than 0.');
- }
- this._targetFrameRate = value;
- }
- },
-
- useDefaultRenderLoop : {
- get : function() {
- return this._useDefaultRenderLoop;
- },
- set : function(value) {
- if (this._useDefaultRenderLoop !== value) {
- this._useDefaultRenderLoop = value;
- if (value && !this._renderLoopRunning) {
- startRenderLoop(this);
- }
- }
- }
- },
-
- resolutionScale : {
- get : function() {
- return this._resolutionScale;
- },
- set : function(value) {
- if (value <= 0) {
- throw new DeveloperError('resolutionScale must be greater than 0.');
- }
- this._resolutionScale = value;
- this._forceResize = true;
- }
- }
- });
-
- CesiumWidget.prototype.showErrorPanel = function(title, message, error) {
- var element = this._element;
- var overlay = document.createElement('div');
- overlay.className = 'cesium-widget-errorPanel';
- var content = document.createElement('div');
- content.className = 'cesium-widget-errorPanel-content';
- overlay.appendChild(content);
- var errorHeader = document.createElement('div');
- errorHeader.className = 'cesium-widget-errorPanel-header';
- errorHeader.appendChild(document.createTextNode(title));
- content.appendChild(errorHeader);
- var errorPanelScroller = document.createElement('div');
- errorPanelScroller.className = 'cesium-widget-errorPanel-scroll';
- content.appendChild(errorPanelScroller);
- var resizeCallback = function() {
- errorPanelScroller.style.maxHeight = Math.max(Math.round(element.clientHeight * 0.9 - 100), 30) + 'px';
- };
- resizeCallback();
- if (defined(window.addEventListener)) {
- window.addEventListener('resize', resizeCallback, false);
- }
- if (defined(message)) {
- var errorMessage = document.createElement('div');
- errorMessage.className = 'cesium-widget-errorPanel-message';
- errorMessage.innerHTML = '<p>' + message + '</p>';
- errorPanelScroller.appendChild(errorMessage);
- }
- var errorDetails = '(no error details available)';
- if (defined(error)) {
- errorDetails = formatError(error);
- }
- var errorMessageDetails = document.createElement('div');
- errorMessageDetails.className = 'cesium-widget-errorPanel-message';
- errorMessageDetails.appendChild(document.createTextNode(errorDetails));
- errorPanelScroller.appendChild(errorMessageDetails);
- var buttonPanel = document.createElement('div');
- buttonPanel.className = 'cesium-widget-errorPanel-buttonPanel';
- content.appendChild(buttonPanel);
- var okButton = document.createElement('button');
- okButton.setAttribute('type', 'button');
- okButton.className = 'cesium-button';
- okButton.appendChild(document.createTextNode('OK'));
- okButton.onclick = function() {
- if (defined(resizeCallback) && defined(window.removeEventListener)) {
- window.removeEventListener('resize', resizeCallback, false);
- }
- element.removeChild(overlay);
- };
- buttonPanel.appendChild(okButton);
- element.appendChild(overlay);
- console.error(title + '\n' + message + '\n' + errorDetails);
- };
-
- CesiumWidget.prototype.isDestroyed = function() {
- return false;
- };
-
- CesiumWidget.prototype.destroy = function() {
- this._scene = this._scene && this._scene.destroy();
- this._container.removeChild(this._element);
- destroyObject(this);
- };
-
- CesiumWidget.prototype.resize = function() {
- var canvas = this._canvas;
- var width = canvas.clientWidth;
- var height = canvas.clientHeight;
- if (!this._forceResize && this._canvasWidth === width && this._canvasHeight === height) {
- return;
- }
- this._forceResize = false;
- configureCanvasSize(this);
- configureCameraFrustum(this);
- };
-
- CesiumWidget.prototype.render = function() {
- this._scene.initializeFrame();
- var currentTime = this._clock.tick();
- if (this._canRender) {
- this._scene.render(currentTime);
- }
- };
- return CesiumWidget;
- });
|