cesium 检测视图改变的代码

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
    <meta name="description" content="Fly to a specified location or view a geographic rectangle.">
    <meta name="cesium-sandcastle-labels" content="Showcases">
    <title>Cesium Demo</title>
    <script type="text/javascript" src="../Sandcastle-header.js"></script>
    <script type="text/javascript" src="../../../ThirdParty/requirejs-2.1.20/require.js"></script>
    <script type="text/javascript">
    require.config({
        baseUrl : ‘../../../Source‘,
        waitSeconds : 60
    });
    </script>
</head>
<body class="sandcastle-loading" data-sandcastle-bucket="bucket-requirejs.html">
<style>
    @import url(../templates/bucket.css);

    #viewChanged, #cameraChanged {
        display: none;
        background-color: red;
        color: white;
    }
</style>
<div id="cesiumContainer" class="fullSize"></div>
<div id="loadingOverlay"><h1>Loading...</h1></div>
<div id="toolbar">
    <div id="viewChanged">View Changed</div>
    <div id="cameraChanged">Camera Changed</div>
</div>
<script id="cesium_sandcastle_script">
function startup(Cesium) {
    ‘use strict‘;
//Sandcastle_Begin
var viewer = new Cesium.Viewer(‘cesiumContainer‘);
var widget = new Cesium.CesiumWidget(‘cesiumContainer‘);
var scene = viewer.scene;
var clock = viewer.clock;
var  timer;

function flyInACity() {
    Sandcastle.declare(flyInACity);
    var camera = scene.camera;
    camera.flyTo({
        destination : Cesium.Cartesian3.fromDegrees(-73.98580932617188, 40.74843406689482, 363.34038727246224),
        complete : function() {
            setTimeout(function() {
                camera.flyTo({
                    destination : Cesium.Cartesian3.fromDegrees(-73.98585975679403, 40.75759944127251, 186.50838555841779),
                    orientation : {
                        heading : Cesium.Math.toRadians(200.0),
                        pitch : Cesium.Math.toRadians(-50.0)
                    },
                    easingFunction : Cesium.EasingFunction.LINEAR_NONE
                });
            }, 1000);
        }
    });
}

Sandcastle.addToolbarMenu([{
    text : ‘Fly in a city‘,
    onselect : function() {
        flyInACity();
        Sandcastle.highlight(flyInACity);
    }
}]);

    /**
     * activates viewchanged Event
     * This event will be fired many times when the camera position or direction is changing
     * @param {Boolean} active
     */

        var camera = scene.camera;
        var posX = camera.position.x;
        var posY = camera.position.y;
        var posZ = camera.position.z;
        var dirX = camera.direction.x;
        var dirY = camera.direction.y;
        var dirZ = camera.direction.z;

        // tolerance
        var posD = 3;
        var dirD = 0.001;

        var listenerFunc = function() {
            var currentCamera = scene.camera;
            var _posX = currentCamera.position.x;
            var _posY = currentCamera.position.y;
            var _posZ = currentCamera.position.z;
            var _dirX = currentCamera.direction.x;
            var _dirY = currentCamera.direction.y;
            var _dirZ = currentCamera.direction.z;

            if (Math.abs(posX - _posX) > posD ||
                Math.abs(posY - _posY) > posD ||
                Math.abs(posZ - _posZ) > posD ||
                Math.abs(dirX - _dirX) > dirD ||
                Math.abs(dirY - _dirY) > dirD ||
                Math.abs(dirZ - _dirZ) > dirD) {
                posX = _posX;
                posY = _posY;
                posZ = _posZ;
                dirX = _dirX;
                dirY = _dirY;
                dirZ = _dirZ;

                if (timer != null) {
                    clearTimeout(timer);
                }
                timer = setTimeout(function(){
                    console.log("Wake up Tiling Manager from sleep");
                    timer = null;
                }, 100 + 100*Math.random());
            }
        };

    widget.clock.onTick.addEventListener(listenerFunc);

//Sandcastle_End
    Sandcastle.finishedLoading();
}
if (typeof Cesium !== "undefined") {
    startup(Cesium);
} else if (typeof require === "function") {
    require(["Cesium"], startup);
}
</script>
</body>
</html>
时间: 2025-01-06 06:11:09

cesium 检测视图改变的代码的相关文章

强制不使用“兼容性视图”的HTML代码

在IE8浏览器以后版本,都有一个“兼容性视图”,让不少新技术无法使用.那么如何禁止浏览器自动选择“兼容性视图”,强制IE以最高级别的可用模式显示内容呢?下面就介绍一段HTML代码. X-UA-Compatible是一个设置IE浏览器兼容模式的属性,在IE8浏览器之后诞生.IE8或者IE9有很多种模式,比如,IE8有4种模式:IE5.5怪异模式.IE7标准模式.IE8几乎标准模式.IE8标准模式:而IE9有7种模式: IE5.5怪异模式.IE7标准模式.IE8几乎标准模式.IE8标准模式.IE9几

Asp.net MVC 视图之公用代码

一.公共模板 1.@RenderBody() 在网站公用部分通过一个占位符@RenderBody()来为网站独立部分预留一个位置.然后私有页面顶部通过@{Layout="公用模板路径"}来引入公用模板,并在自身放到公用模板的位置.同时也可以设置ViewData或ViewBag设置网站标题,关键词等信息. @{ Layout = "~/Views/Shared/_Layout.cshtml"; ViewBag.Title = "从这里可以设置网站标题&quo

用VLD检测你的php代码执行效率~~

在写程序的时候,经常会为是改用empty()还是isset好,或是用单引号还是双引号来显示连接字符串而发出疑问,现在好了.我们其实可以通过程序很科学的得出精确的答案.知道我们的程序到底怎样写效率会更好. VLD全名是Vulcan Logic Disassembler,可以用来检测PHP脚本的执行情况. 1)安装VLD:wget http://pecl.php.net/get/vldtar zxvf vld-0.9.1.tgzcd vld-0.9.1phpize./configuremake in

MVC 5 视图之公用代码

一.公共模板 1.@RenderBody() 在网站公用部分通过一个占位符@RenderBody()来为网站独立部分预留一个位置.然后私有页面顶部通过@{Layout="公用模板路径"}来引入公用模板,并在自身放到公用模板的位置.同时也可以设置ViewData或ViewBag设置网站标题,关键词等信息. @{ Layout = "~/Views/Shared/_Layout.cshtml"; ViewBag.Title = "从这里可以设置网站标题&quo

MVC添加动态视图的参考代码。重点是添加部分视图的使用方法,非常有用的代码!!!!!!!!!!!!!!

这是在model里的两个查询方法 using System; using System.Collections.Generic; using System.Linq; using System.Web; namespace Mvcyemian.Models { public class NewsBF { private mydboDataContext _Context = new mydboDataContext(); //通过type查询新闻分类 public List<News> Sel

c# 检测设备改变

//检测硬件改变 protected override void WndProc(ref Message m) { const int WM_DEVICECHANGE = 0x219; if (m.Msg == WM_DEVICECHANGE) { if(UsbDev.FindUsbDev(0x000b, 0x8888)) { //尝试打开USB if (UsbConnect == true) return;//说明是其他设备活动 UsbConnect = UsbDev.OpenDev(0x00

windows下检测文件改变

这个主要是应用在我前一篇博客里提到的脚本热加载功能.主要实现的功能检测文件夹内文件的变化(改变.新增.删除.重命名),当发现改变的时候通知lua重新加载脚本.基本上就是一个windows api的使用.实际应用中会有一些细节需要注意,比如我习惯使用sublime text编辑,而sublime text保存文件不是直接改变文件内容,而是新增一个文件.这些细节情况需要实际使用中微调. 代码如下: #include "FileWatcher.h" #include "cocos2

[转载]强制不使用“兼容性视图”的HTML代码

在IE8浏览器以后版本,都有一个"兼容性视图",让不少新技术无法使用.那么如何禁止浏览器自动选择"兼容性视图",强制IE以最高级别的可用模式显示内容呢?下面就介绍一段HTML代码. X-UA-Compatible是一个设置IE浏览器兼容模式的属性,在IE8浏览器之后诞生.IE8或者IE9有很多种模式,比如,IE8有4种模式:IE5.5怪异模式.IE7标准模式.IE8几乎标准模式.IE8标准模式:而IE9有7种模式: IE5.5怪异模式.IE7标准模式.IE8几乎标准

iOS 多视图—视图切换之代码块传参切换

在iOS设计中 ,视图在切换的时候同时能传参数到下一个视图页面的方法特别多,这里就以代码块实现传参的方法 FirstViewController.h #import <UIKit/UIKit.h> //声明代码块 typedef void (^PostValueBlock) (NSString *Info); @interface FirstViewController : UIViewController<UITextFieldDelegate> @property(strong