当前位置:网站首页>Cesium教程 (1) 界面介绍-3dtiles加载-更改鼠标操作设置
Cesium教程 (1) 界面介绍-3dtiles加载-更改鼠标操作设置
2022-07-27 05:19:00 【LEILEI18A】
Cesium教程 (1) 界面介绍-3dtiles加载-更改鼠标操作设置
目录
1. 界面介绍 (7-8互换位置)

2. 数据转3dtiles
(1) cesiumlab 需要联网 免费转很多格式(高级功能需要收费)
(2) cesiumApp
(3) osgb-3dtiles github上搜索
3. 代码详解
实现 界面管理-鼠标操作设置-3dtiles加载-初始位置定位
html部分
<!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.0">
<title>Document</title>
<script src="../Build/Cesium/Cesium.js"></script>
<link rel="stylesheet" href="../Build/Cesium/Widgets/widgets.css" />
<style>
html,
body,
#cesiumContainer {
width: 100%;
height: 100%;
margin: 0;
padding: 0;
overflow: hidden;
}
</style>
</head>
<body>
<div id="cesiumContainer"></div>
<script src="./app.js"></script>
</body>
</html>app.js部分
// 通过引入cesium.d.ts实现vscode 代码智能提示!
// /// <reference path="../Build/Cesium/Cesium.d.ts" />
// import * as Cesium from "cesium";
var viewer = new Cesium.Viewer("cesiumContainer", {
// geocoder: false, // 搜索按钮
// sceneModePicker: false, // 2D-3D-CV模式切换按钮
// navigationHelpButton: false, // 帮助按钮
// animation: false, // 动画按钮(左小角圆圈)
// timeline: false, // 时间线
scene3DOnly: false, // 每个几何体是否以3D形式渲染(GPU)
});
// 去掉logo
viewer.cesiumWidget.creditContainer.style.display = "none";
// 去掉背景图层
// viewer.imageryLayers.removeAll();
// 更改鼠标操作习惯
// 关闭双击事件
// viewer.screenSpaceEventHandler.removeInputAction(
// Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK
// );
// 鼠标右键 倾斜操作
viewer.scene.screenSpaceCameraController.tiltEventTypes = [
Cesium.CameraEventType.RIGHT_DRAG
];
// 鼠标滑轮 放缩操作
viewer.scene.screenSpaceCameraController.zoomEventTypes = [
Cesium.CameraEventType.WHEEL,
// Cesium.CameraEventType.PINCH
];
// 鼠标左键 3D下聚焦局部时给人感觉是平移-本质是地球旋转(范围小-旋转类似平移)
viewer.scene.screenSpaceCameraController.rotateEventTypes = [
Cesium.CameraEventType.LEFT_DRAG
];
// 加载3dtiles-倾斜摄影模型-采用cesiumlab转3dtiles
const tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
url : "./Data/tileset.json",
maximumMemoryUsage: 1024,
}));
// 异步加载
var height = 5;
tileset.readyPromise.then(function(tileset) {
console.log(tileset);
var cartographic = Cesium.Cartographic.fromCartesian(tileset.boundingSphere.center);
var lng = Cesium.Math.toDegrees(cartographic.longitude); //使用经纬度和弧度的转换,将WGS84弧度坐标系转换到目标值,弧度转度
var lat = Cesium.Math.toDegrees(cartographic.latitude);
//计算中心点位置的地表坐标
var surface = Cesium.Cartesian3.fromDegrees(lng, lat, 0.0);
//偏移后的坐标
var offset = Cesium.Cartesian3.fromDegrees(lng, lat, height);
var translation = Cesium.Cartesian3.subtract(offset, surface, new Cesium.Cartesian3());
tileset.modelMatrix = Cesium.Matrix4.fromTranslation(translation);
// 不建议网上直接修改源码的做法,可以设置homeButton监听事件
var heading = Cesium.Math.toRadians(0);
var pitch = Cesium.Math.toRadians(-90);
viewer.zoomTo(tileset, new Cesium.HeadingPitchRange(heading, pitch));
// overwrite homebutton
viewer.homeButton.viewModel.command.beforeExecute.addEventListener(function (e) {
e.cancel = true;
viewer.zoomTo(tileset, new Cesium.HeadingPitchRange(heading, pitch));
});
// 增加entity
var center = tileset.boundingSphere.center;
center.z = center.z + 20;
viewer.entities.add({
name : 'Citizens Bank Park',
position : center,
point : {
pixelSize : 5,
color : Cesium.Color.RED,
outlineColor : Cesium.Color.WHITE,
outlineWidth : 2
},
label : {
text : 'Cesium-倾斜摄影模型',
font : '16pt monospace',
fillColor : Cesium.Color.RED,
style: Cesium.LabelStyle.FILL_AND_OUTLINE,
outlineWidth : 2,
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
pixelOffset : new Cesium.Cartesian2(0, -9)
}
});
});
4. 其他
(1) vscode中cesium智能提示功能
原生的js,不使用vue时,推荐在js开始写入如下代码即可实现智能提示:(运行代码时,注释掉这2行代码,否则报错)
/// <reference path="../Build/Cesium/Cesium.d.ts" />
import * as Cesium from "cesium";
(2)cesium安装教程 网上一堆!
边栏推荐
猜你喜欢

Greedy high performance neural network and AI chip application research and training

12. Optimization problem practice

11. Gradient derivation of perceptron

7. Merger and division

17. Attenuation of momentum and learning rate

李宏毅 2020 深度学习与人类语言处理 DLHLP-Conditional Generation by RNN and Attention-p22

Day14. Using interpretable machine learning method to distinguish intestinal tuberculosis and Crohn's disease

14. Example - Multi classification problem

DSGAN退化网络

What has been updated in the Chinese version of XMIND mind map 2022 v12.0.3?
随机推荐
Chrome 如何快速将一组正在浏览的网页(tabs)转移到另一台设备(电脑)上
Redis在windows下的idea连接不上问题
9.高阶操作
13.逻辑回归
【头歌】重生之我在py入门实训中(9):异常处理
[high concurrency] interviewer
【头歌】重生之我在py入门实训中(6):函数的定义与应用
1.PyTorch简介
【5·20特辑】MatLAb之我在和你表白
Digital image processing Chapter 2 fundamentals of digital image
Gbase 8C - SQL reference 6 SQL syntax (4)
【Arduino】重生之Arduino 学僧(1)
制作视频特效必备工具:NUKE 13
小技巧-彻底删除U盘中的文件
3.分类问题---手写数字识别初体验
Public opinion & spatio-temporal analysis of infectious diseases literature reading notes
百问网驱动大全学习(二)I2C驱动
Dpdk network protocol stack VPP OVS DDoS Sdn nfv virtualization high performance expert Road
西瓜书学习笔记---第一、二章
图像超分辨率评价指标