ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Cesium之Sandbox

2022-06-04 23:05:09  阅读:280  来源: 互联网

标签:function canvas scene var Sandbox Cesium


var Sandbox = Sandbox || {};//定义一个变量Sandbox,它是类?还是变量?
(function() {
    "use strict";
    /*global Cesium,console*/

    /**
     * @constructor
     */
    Cesium.Sandbox = function() {
        var canvas = document.getElementById("glCanvas");
        var scene = new Cesium.Scene(canvas);
        var primitives = scene.getPrimitives();
        var ellipsoid = Cesium.Ellipsoid.WGS84;

        // TODO: make multiple tile providers available
        var bing = new Cesium.BingMapsTileProvider({
            server : "dev.virtualearth.net",
            mapStyle : Cesium.BingMapsStyle.AERIAL
        });

        var cb = new Cesium.CentralBody(scene.getCamera(), ellipsoid);
        cb.dayTileProvider = bing;
        cb.nightImageSource = "Images/land_ocean_ice_lights_2048.jpg";
        cb.specularMapSource = "Images/earthspec1k.jpg";
        cb.cloudsMapSource = "Images/earthcloudmaptrans.jpg";
        cb.bumpMapSource = "Images/earthbump1k.jpg";
        cb.showSkyAtmosphere = true;
        cb.showGroundAtmosphere = true;

        primitives.setCentralBody(cb);

        scene.getCamera().getControllers().addSpindle();
        scene.getCamera().getControllers().get(0).mouseConstrainedZAxis = true;

        scene.getCamera().getControllers().addFreeLook();

        scene.getCamera().frustum.near = 100.0;

        this._scene = scene;
        this._ellipsoid = ellipsoid;

        scene.setAnimation(function() {
            var camera = scene.getCamera();
            var cameraPosition = new Cesium.Cartesian4(camera.position.x, camera.position.y, camera.position.z, 1.0);
            var v = camera.transform.multiplyWithVector(cameraPosition).getXYZ();
            scene.setSunPosition(v);

            //  In case of canvas resize
            canvas.width = canvas.clientWidth;
            canvas.height = canvas.clientHeight;
            scene.getContext().setViewport({
                x : 0,
                y : 0,
                width : canvas.width,
                height : canvas.height
            });

            scene.getCamera().frustum.aspectRatio = canvas.clientWidth / canvas.clientHeight;

            var s = Cesium.Sandbox.getCurrentCodeSnippet();
            if (s && s.animate) {
                s.animate();
            }
        });

        (function tick() {
            try {
                scene.render();
            } catch (e) {
                // Live editing can create invalid states, e.g., a conic sensor with inner half-angle
                // greater than outer half-angle, which cause exceptions.  We swallow the exceptions
                // to avoid losing the animation frame.
                console.log(e.message);
            }

            Cesium.requestAnimationFrame(tick);
        }());

        canvas.oncontextmenu = function(e) {
            e.preventDefault();
        };
        canvas.onselectstart = function(e) {
            e.preventDefault();
        };
    };

    Cesium.Sandbox.prototype.getScene = function() {
        return this._scene;
    };

    Cesium.Sandbox.prototype.getEllipsoid = function() {
        return this._ellipsoid;
    };

    Cesium.Sandbox.prototype.clearScene = function() {
        var scene = this._scene;
        scene.getPrimitives().removeAll();
        scene.getAnimations().removeAll();
    };
}());

在main.js中引用

Editor.js

/*global Sandbox,ace,require,define*/

    /**
     * Constructs an instance of a Javascript Ace editor.
     *
     * @param {String} id The id of the DOM element to be converted to an editor
     *
     * @constructor
     */
    Sandbox.Editor = function(id) {
        define('ace/mode/cesium', function(require, exports, module) {
            var oop = require("pilot/oop");
            var TextMode = require("ace/mode/text").Mode;
            var Tokenizer = require("ace/tokenizer").Tokenizer;
            var WorkerClient = require("ace/worker/worker_client").WorkerClient;
            var CesiumHighlightRules = require("ace/mode/cesium_highlight_rules").CesiumHighlightRules;

 

标签:function,canvas,scene,var,Sandbox,Cesium
来源: https://www.cnblogs.com/2008nmj/p/16342977.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有