cesium之相机camera

news/2024/7/9 23:38:58 标签: vue

cesium提供三种方式对camera进行操作:setView,flyto,lookAt。
一.setView
setView有两种计算视角方式。
1.Cartesian3方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>cxxx</title>
    <script src="Build/Cesium/Cesium.js"></script>
    <link rel="stylesheet" href="Build/Cesium/Widgets/widgets.css">
    <style>
        html,body{
            height: 100%;
            margin: 0px;
            padding: 0px;
        }
    </style>
</head>
<body>
    <div id="cesiumContainer" style="height: 100%"></div>
    <script>
        var viewer = new Cesium.Viewer('cesiumContainer');
        viewer.camera.setView({
            destination : Cesium.Cartesian3.fromDegrees(116.435314,39.960521, 15000.0),     
            orientation: {       //设置视角
                heading : Cesium.Math.toRadians(20.0), // east, default value is 0.0 (north)左右摆头
                pitch : Cesium.Math.toRadians(-90.0),    // default value (looking down)上下抬头 -90俯视 0平视 90仰视(默认俯视)
                roll : 0.0                             // default value
            }
        });
    </script>
</body>
</html>

2.Rectangle方式

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>cxxx</title>
    <script src="Build/Cesium/Cesium.js"></script>
    <link rel="stylesheet" href="Build/Cesium/Widgets/widgets.css">
    <style>
        html,body{
            height: 100%;
            margin: 0px;
            padding: 0px;
        }
    </style>
</head>
<body>
    <div id="cesiumContainer" style="height: 100%"></div>
    <script>
        var viewer = new Cesium.Viewer('cesiumContainer');
        viewer.camera.setView({
            destination: Cesium.Rectangle.fromDegrees(0.0, 20.0, 10.0, 30.0),//west, south, east, north
            orientation: {
                heading : Cesium.Math.toRadians(20.0), // 方向
                pitch : Cesium.Math.toRadians(-90.0),// 倾斜角度
                roll : 0
            } 
        });
    </script>
</body>
</html>

二.flyto

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>cxxx</title>
    <script src="Build/Cesium/Cesium.js"></script>
    <link rel="stylesheet" href="Build/Cesium/Widgets/widgets.css">
    <style>
        html,body{
            height: 100%;
            margin: 0px;
            padding: 0px;
        }
    </style>
</head>
<body>
    <div id="cesiumContainer" style="height: 100%"></div>
    <script>
        var viewer = new Cesium.Viewer('cesiumContainer');
        viewer.camera.flyTo({
            destination :Cesium.Cartesian3.fromDegrees(116.435314,39.960521, 15000.0), // 设置位置
            orientation: {
                heading :Cesium.Math.toRadians(20.0), // 方向
                pitch :Cesium.Math.toRadians(-90.0),// 倾斜角度
                roll :0
            },
            duration:5, // 设置飞行持续时间,默认会根据距离来计算
            complete:function () {
            // 到达位置后执行的回调函数
            },
            cancle:function () {
            // 如果取消飞行则会调用此函数
            },
            pitchAdjustHeight:-90, // 如果摄像机飞越高于该值,则调整俯仰俯仰的俯仰角度,并将地球保持在视口中。
            maximumHeight:5000, // 相机最大飞行高度
            flyOverLongitude:100, // 如果到达目的地有2种方式,设置具体值后会强制选择方向飞过这个经度(这个,很好用)
        });
    </script>
</body>
</html>

三.lookAt

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>cxxx</title>
    <script src="Build/Cesium/Cesium.js"></script>
    <link rel="stylesheet" href="Build/Cesium/Widgets/widgets.css">
    <style>
        html,body{
            height: 100%;
            margin: 0px;
            padding: 0px;
        }
    </style>
</head>
<body>
    <div id="cesiumContainer" style="height: 100%"></div>
    <script>
        var viewer = new Cesium.Viewer('cesiumContainer');
        var center = Cesium.Cartesian3.fromDegrees(114.44455, 22.0444);//camera视野的中心点坐标
        var heading = Cesium.Math.toRadians(50.0);
        var pitch = Cesium.Math.toRadians(-20.0);
        var range = 5000.0;
        viewer.camera.lookAt(center, new Cesium.HeadingPitchRange(heading, pitch, range));
    </script>
</body>
</html>

http://www.niftyadmin.cn/n/780852.html

相关文章

基于java springboot记账本微信小程序源码(毕设)

开发环境及工具&#xff1a; 大于Jdk1.8&#xff0c;大于mysql5.5&#xff0c;idea&#xff08;eclipse&#xff09;&#xff0c;微信小程序开发工具 技术说明&#xff1a; Springboot mybatis html vue.js bootstrap 小程序 代码注释齐全&#xff0c;没有多余代码&#xf…

两次参加中国大学生服务外包大赛的感悟

作为一个参加了两次(第十、十一界)中国大学生服务外包大赛的人&#xff0c;第一次由于没有经验&#xff0c;以惨败告终&#xff0c;第二次自己作为主力在和队友们的共同努力下&#xff0c;吸取了第一次的教训&#xff0c;最终拿到了国家二等奖&#xff0c;虽然没有拿到一等奖&a…

基于java springboot兼职小程序源码(毕设)

开发环境及工具&#xff1a; 大等于jdk1.8&#xff0c;大于mysql5.5&#xff0c;idea&#xff08;eclipse&#xff09;&#xff0c;微信开发者工具 技术说明&#xff1a; springboot mybatis 微信小程序 代码注释齐全&#xff0c;没有多余代码&#xff0c;适合学习(毕设)&a…

es6中的结构赋值let {a,b} = this.data

最近碰到了let {a,b} this.data这种情况&#xff0c;其实这种写法是es6中的解构赋值&#xff0c;相当于 let a this.data.a; let b this.data.b;示例&#xff1a; let data {a: 1, b: 2} let {a, b} data console.log(a, b) // 1 2

如何设计真正高性能高并发分布式系统?

1 、引子 软件复杂性来源于几个方面&#xff1a;高并发高性能、高可用、可扩展、低成本、低规模、可维护、安全等。架构演化、发展都是为了试图降低复杂性&#xff1a; 高并发、高性能&#xff1a;互联网系统特点&#xff0c;用户量大&#xff0c;请求量大&#xff0c;高并发高…

基于java springboot电影购票选座微信小程序源码(毕设)

开发环境及工具&#xff1a; 大等于jdk1.8&#xff0c;大于mysql5.5&#xff0c;idea&#xff08;eclipse&#xff09;&#xff0c;微信开发者工具 技术说明&#xff1a; springboot mybatis 微信小程序 代码注释齐全&#xff0c;没有多余代码&#xff0c;适合学习(毕设)&a…

cesium中的坐标系及坐标转换详解

前言 Cesium项目中经常涉及到模型加载、浏览以及不同数据之间的坐标转换&#xff0c;但是很多人都没有弄明白,本文详细的介绍了Cesium中采用的两大坐标系以及之间转换的各种方法。 Cesium中的坐标系 Cesium中常用的坐标有两种WGS84地理坐标系和笛卡尔空间坐标系&#xff0c;…

基于java springboot新闻发布微信小程序源码(毕设)

开发环境及工具&#xff1a; 大等于jdk1.8&#xff0c;大于mysql5.5&#xff0c;idea&#xff08;eclipse&#xff09; 技术说明&#xff1a; springboot mybatis 微信小程序 代码注释齐全&#xff0c;没有多余代码&#xff0c;适合学习(毕设)&#xff0c;二次开发&#xf…