运行天地图Cesium.js三维服务案例

零、技术选型及相关网址

技术选型:Vue2、VueCli5、Cesium.js、天地图
相关网址:三维服务 - 天地图 帮助文档

一、cesium 初始化参数解析

initializeCesium() {this.viewer = new Cesium.Map("cesiumContainer", {shouldAnimate: true, // 是否启用动画效果。selectionIndicator: false, // 是否显示选中指示器。baseLayerPicker: false, // 是否显示底图选择器。fullscreenButton: false, // 是否显示全屏按钮。geocoder: false, // 是否显示地理编码器(用于地址搜索)。homeButton: false, // 是否显示“回到初始视角”的按钮。infoBox: false, // 是否显示信息框。sceneModePicker: false, // 是否显示场景模式选择器(2D、3D、哥伦布视图)。timeline: false, // 是否显示时间线。navigationHelpButton: false, // 是否显示导航帮助按钮。navigationInstructionsInitiallyVisible: false, // 是否初始显示导航指示。showRenderLoopErrors: false, // 是否显示渲染循环错误。shadows: false, // 是否渲染阴影。});
}

二、配置相关属性

setupConfigProp() {// 抗锯齿。this.viewer.scene.fxaa = false;// 禁用快速近似抗锯齿(FXAA)后处理阶段。this.viewer.scene.postProcessStages.fxaa.enabled = false;if (Cesium.FeatureDetection.supportsImageRenderingPixelated()) {// 判断是否支持图像渲染像素化处理this.viewer.resolutionScale = window.devicePixelRatio;}// 启用地球大气层效果(如地平线上的光晕)。this.viewer.scene.globe.showGroundAtmosphere = true;// 设置相机的最大俯仰角度,这里设置为-20度(弧度制)。this.viewer.scene.screenSpaceCameraController.constrainedPitch =Cesium.Math.toRadians(-20);// 禁用相机在视角重置时自动调整俯仰和方向。this.viewer.scene.screenSpaceCameraController.autoResetHeadingPitch = false;// 设置相机缩放的惯性,0.5 表示中等惯性。this.viewer.scene.screenSpaceCameraController.inertiaZoom = 0.5;// 设置相机允许的最小缩放距离,单位米。this.viewer.scene.screenSpaceCameraController.minimumZoomDistance = 50;// 设置相机允许的最大缩放距离,单位米。this.viewer.scene.screenSpaceCameraController.maximumZoomDistance = 20000000;// 定义相机缩放的触发事件类型。this.viewer.scene.screenSpaceCameraController.zoomEventTypes = [Cesium.CameraEventType.RIGHT_DRAG, // 右键拖拽Cesium.CameraEventType.WHEEL, // 鼠标滚轮Cesium.CameraEventType.PINCH, // 触摸屏捏合];// 定义相机倾斜的触发事件类型。this.viewer.scene.screenSpaceCameraController.tiltEventTypes = [Cesium.CameraEventType.MIDDLE_DRAG, // 中键拖拽Cesium.CameraEventType.PINCH, // 触摸屏捏合{eventType: Cesium.CameraEventType.LEFT_DRAG,modifier: Cesium.KeyboardEventModifier.CTRL,}, // 按住 CTRL 键的同时左键拖拽{eventType: Cesium.CameraEventType.RIGHT_DRAG,modifier: Cesium.KeyboardEventModifier.CTRL,}, // 按住 CTRL 键的同时右键拖拽];
}

三、叠加影像服务

setupImageryLayers() {// 叠加影像服务(通过使用指定的URL模板请求图块来提供图像)const imgMap = new Cesium.UrlTemplateImageryProvider({url: tdtUrl + "DataServer?T=img_w&x={x}&y={y}&l={z}&tk=" + token,subdomains: subdomains,tilingScheme: new Cesium.WebMercatorTilingScheme(),maximumLevel: 18,});this.viewer.imageryLayers.addImageryProvider(imgMap);// 叠加国界服务const iboMap = new Cesium.UrlTemplateImageryProvider({url: tdtUrl + "DataServer?T=ibo_w&x={x}&y={y}&l={z}&tk=" + token,subdomains: subdomains,tilingScheme: new Cesium.WebMercatorTilingScheme(),maximumLevel: 10,});this.viewer.imageryLayers.addImageryProvider(iboMap);
},
叠加了影像服务、国界服务

四、点击事件、双击事件

setupEventHandlers() {// 取消默认的双击事件this.viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);// 添加鼠标点击事件监听器const handler = new Cesium.ScreenSpaceEventHandler(this.viewer.scene.canvas);handler.setInputAction((click) => {const earthPosition = this.viewer.scene.pickPosition(click.position);if (Cesium.defined(earthPosition)) {const cartographic = Cesium.Cartographic.fromCartesian(earthPosition);const longitude = Cesium.Math.toDegrees(cartographic.longitude);const latitude = Cesium.Math.toDegrees(cartographic.latitude);const height = cartographic.height; // 获取高度信息console.log(`经度: ${longitude}, 纬度: ${latitude}, 高度: ${height}`);// 在这里可以根据经纬度进行进一步的处理}}, Cesium.ScreenSpaceEventType.LEFT_CLICK);
},

鼠标点击事件输入为:

五、相机飞行位置

flyToPosition() {// 将三维球定位到中国this.viewer.camera.flyTo({destination: Cesium.Cartesian3.fromDegrees( 121.28148939885521, 30.702808303473166, 700 ),orientation: {heading: Cesium.Math.toRadians(334.8202942851978),pitch: Cesium.Math.toRadians(-45),roll: Cesium.Math.toRadians(0),},complete: function callback() {// 定位完成之后的回调函数},});
}

六、叠加三维地名服务

// 叠加三维地名服务
addGeoWTFS() {// 叠加三维地名服务const wtfs = new Cesium.GeoWTFS({viewer: this.viewer,//三维地名服务,使用wtfs服务subdomains: cesiumConfig.subdomains,metadata: {boundBox: {minX: -180,minY: -90,maxX: 180,maxY: 90,},minLevel: 1,maxLevel: 20,},depthTestOptimization: true,dTOElevation: 15000,dTOPitch: Cesium.Math.toRadians(-70),aotuCollide: true, //是否开启避让collisionPadding: [5, 10, 8, 5], //开启避让时,标注碰撞增加内边距,上、右、下、左serverFirstStyle: true, //服务端样式优先labelGraphics: {font: "28px sans-serif",fontSize: 28,fillColor: Cesium.Color.WHITE,scale: 0.5,outlineColor: Cesium.Color.BLACK,outlineWidth: 2,style: Cesium.LabelStyle.FILL_AND_OUTLINE,showBackground: false,backgroundColor: Cesium.Color.RED,backgroundPadding: new Cesium.Cartesian2(10, 10),horizontalOrigin: Cesium.HorizontalOrigin.LEFT,verticalOrigin: Cesium.VerticalOrigin.TOP,eyeOffset: Cesium.Cartesian3.ZERO,pixelOffset: new Cesium.Cartesian2(5, 5),disableDepthTestDistance: undefined,},billboardGraphics: {horizontalOrigin: Cesium.HorizontalOrigin.CENTER,verticalOrigin: Cesium.VerticalOrigin.CENTER,eyeOffset: Cesium.Cartesian3.ZERO,pixelOffset: Cesium.Cartesian2.ZERO,alignedAxis: Cesium.Cartesian3.ZERO,color: Cesium.Color.WHITE,rotation: 0,scale: 1,width: 18,height: 18,disableDepthTestDistance: undefined,},});// 三维地名服务,使用wtfs服务wtfs.getTileUrl = function () {return (cesiumConfig.tdtUrl +"mapservice/GetTiles?lxys={z},{x},{y}&tk=" +cesiumConfig.token);};// 三维图标服务wtfs.getIcoUrl = function () {return (cesiumConfig.tdtUrl +"mapservice/GetIcon?id={id}&tk=" +cesiumConfig.token);};wtfs.initTDT([{x: 6,y: 1,level: 2,boundBox: { minX: 90, minY: 0, maxX: 135, maxY: 45 },},{x: 7,y: 1,level: 2,boundBox: { minX: 135, minY: 0, maxX: 180, maxY: 45 },},{x: 6,y: 0,level: 2,boundBox: { minX: 90, minY: 45, maxX: 135, maxY: 90 },},{x: 7,y: 0,level: 2,boundBox: { minX: 135, minY: 45, maxX: 180, maxY: 90 },},{x: 5,y: 1,level: 2,boundBox: { minX: 45, minY: 0, maxX: 90, maxY: 45 },},{x: 4,y: 1,level: 2,boundBox: { minX: 0, minY: 0, maxX: 45, maxY: 45 },},{x: 5,y: 0,level: 2,boundBox: { minX: 45, minY: 45, maxX: 90, maxY: 90 },},{x: 4,y: 0,level: 2,boundBox: { minX: 0, minY: 45, maxX: 45, maxY: 90 },},{x: 6,y: 2,level: 2,boundBox: { minX: 90, minY: -45, maxX: 135, maxY: 0 },},{x: 6,y: 3,level: 2,boundBox: { minX: 90, minY: -90, maxX: 135, maxY: -45 },},{x: 7,y: 2,level: 2,boundBox: { minX: 135, minY: -45, maxX: 180, maxY: 0 },},{x: 5,y: 2,level: 2,boundBox: { minX: 45, minY: -45, maxX: 90, maxY: 0 },},{x: 4,y: 2,level: 2,boundBox: { minX: 0, minY: -45, maxX: 45, maxY: 0 },},{x: 3,y: 1,level: 2,boundBox: { minX: -45, minY: 0, maxX: 0, maxY: 45 },},{x: 3,y: 0,level: 2,boundBox: { minX: -45, minY: 45, maxX: 0, maxY: 90 },},{x: 2,y: 0,level: 2,boundBox: { minX: -90, minY: 45, maxX: -45, maxY: 90 },},{x: 0,y: 1,level: 2,boundBox: { minX: -180, minY: 0, maxX: -135, maxY: 45 },},{x: 1,y: 0,level: 2,boundBox: { minX: -135, minY: 45, maxX: -90, maxY: 90 },},{x: 0,y: 0,level: 2,boundBox: { minX: -180, minY: 45, maxX: -135, maxY: 90 },},]);
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/583484.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于二进制包的mysql安装

下载二进制包 wget https://cdn.mysql.com//Downloads/MySQL-8.0/mysql-8.0.35-linux-glibc2.17-x86_64.tar.xz查看是否存在mariadb安装 [rootbogon ~]# rpm -qa | grep mariadb mariadb-libs-5.5.68-1.el7.x86_64#卸载包。 --nodeps 不检验依赖 [rootbogon ~]# rpm -e --…

gem5学习(7):内存系统中创建 SimObjects--Creating SimObjects in the memory system

目录 一、gem5 master and slave ports 二、Packets 三、Port interface 1、主设备发送请求时从设备忙 2、从设备发送响应时主设备忙 四、Simple memory object example 1、Declare the SimObject 2、Define the SimpleMemobj class 3、Define the SimpleMemobj class…

EST-100身份证社保卡签批屏按捺终端PC版web版本http协议接口文档,支持web网页开发对接使用

<!DOCTYPE html><html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width,initial-scale1.0"><title>演示DEMO</title><script type"text/…

亚马逊SEO是什么意思?亚马逊标题的SEO方法是什么?-站斧浏览器

亚马逊SEO是什么意思&#xff1f; 亚马逊SEO主要包括了对标题、描述、五点简介等元素的优化&#xff0c;以及评价和评论的管理等方面。下面将详细分析亚马逊SEO的相关内容&#xff0c;帮助卖家更好地理解和应用。 在亚马逊平台上进行SEO优化需要考虑以下几个方面&#xff1a;…

gin框架使用系列之四——json和protobuf的渲染

系列目录 《gin框架使用系列之一——快速启动和url分组》《gin框架使用系列之二——uri占位符和占位符变量的获取》《gin框架使用系列之三——获取表单数据》 上篇我们介绍了如何获取数据&#xff0c;本篇我们介绍一下如何返回固定格式的数据。 一、返回JSON数据 在web开发中…

如何在临近期末考之前,保持一个良好的心态呢?

在临近期末考之前&#xff0c;保持一个良好的心态非常重要&#xff0c;因为这有助于你在考试中发挥出自己的最佳水平。以下是一些建议&#xff0c;帮助你保持冷静和专注&#xff1a; 制定计划&#xff1a;制定一个详细的学习计划&#xff0c;包括每天要复习的科目和内容。这样…

开源安全测试工具 | 网络安全工具列表

自动化渗透测试 • AttackSurfaceMapper (https://github.com/superhedgy/AttackSurfaceMapper) - 自动化渗透测试工具, 使用手册/测试流程 (https://www.uedbox.com/post/59110/)。 • vajra (https://github.com/r3curs1v3-pr0xy/vajra) - 自动化渗透测试. • Savior (https…

Linux管理LVM逻辑卷

目录 一、LVM逻辑卷介绍 1. 概述 2. LVM基本术语 2.1 PV&#xff08;Physical Volume&#xff0c;物理卷&#xff09; 2.2 VG (Volume Group&#xff0c;卷组&#xff09; 2.3 LV (Logical Volume&#xff0c;逻辑卷&#xff09; 3. 常用的磁盘命令 4. 查看系统信息的命…

golang第一卷---go入门

go入门 对于使用go的好处环境变量配置开发工具 参考网站 &#xff1a;go入门 对于使用go的好处 简单好记的关键词和语法。轻松上手&#xff0c;简单易学。更高的效率。比Java&#xff0c;C等拥有更高的编译速度&#xff0c;同时运行效率媲美C&#xff0c;同时开发效率非常高。…

爬虫工作量由小到大的思维转变---<第三十三章 Scrapy Redis 23年8月5日后会遇到的bug)>

前言: 收到回复评论说,按照我之前文章写的: 爬虫工作量由小到大的思维转变---&#xff1c;第三十一章 Scrapy Redis 初启动/conn说明书)&#xff1e;-CSDN博客 在启动scrapy-redis后,往redis丢入url网址的时候遇到: TypeError: ExecutionEngine.crawl() got an unexpected …

Conda简介及常用指令

Conda 是一个开源的包管理器和环境管理器&#xff0c;主要用于安装、运行和升级数据科学和机器学习等领域的软件包和依赖。Conda 可以用于多种语言&#xff0c;包括 Python、R、Ruby、Lua、Scala、Java、JavaScript、C/ C 等。 Conda 的主要特点 环境管理&#xff1a;Conda 允…

linux查看服务器内存

要查看服务器内存&#xff0c;可以使用以下命令&#xff1a; 使用 free 命令来查看服务器的内存使用情况&#xff1a; free -h该命令将显示内存使用情况的摘要&#xff0c;包括总内存、已使用内存、可用内存等信息。 使用 top 命令来实时监视内存使用情况&#xff1a; top在…

Qt GUI 优化方案详解

文章目录 一、引言二、应用启动优化2.1 懒加载概念1. **懒加载的应用场景:**2. **Qt中的懒加载方式:**3. **示例 - C++中的懒加载:**4. **示例 - QML中的懒加载:**2.2 异步加载1. **异步加载的应用场景:**2. **实现异步加载的方式:**3. **示例 - 使用Qt的异步网络请求:*…

数据资产专题3:估值

欢迎关注主页个人介绍及相关链接&#xff0c;获取更多算法源码材料 2023数据资源入表白皮书&#xff0c;推荐系统源码下载-CSDN博客 浅析研发支出费用化和资本化的区别-CSDN博客 商业银行数据资产估值白皮书&#xff0c;推荐系统源码下载-CSDN博客 用友BIP数据资产入表解决…

odoo17核心概念view4——view.js

这是view系列的第四篇文章&#xff0c;专门介绍View组件。 作为一个Component&#xff0c;它总共包含js、css、xml三个标准文件&#xff0c;当然最重要的是view.js 首先在setup函数中对传入的参数props做了各种校验&#xff0c;然后扩展了subenv useSubEnv({keepLast: new Kee…

2. SQL - 约束

1 主键约束 PRIMARY KEY 约束唯一标识数据库表中的每条记录。 主键必须包含唯一的值。 主键列不能包含 NULL 值。 每个表都应该有一个主键&#xff0c;并且每个表只能有一个主键。 添加主键约束 创建表时&#xff0c;在字段描述处&#xff0c;声明指定字段为主键创建表时&…

PLC远程上下载物联网网关的功能

PLC远程上下载物联网网关的功能 设备远程监控&#xff1a;通过物联网网关&#xff0c;可以实时监控PLC设备的运行状态&#xff0c;获取设备的各种参数信息&#xff0c;以便及时发现和解决设备故障。 数据采集与传输&#xff1a;蓝蜂物联网PLC远程网关可以采集PLC设备的各种数据…

C++ --绪论

绪论 1.1 导学1.2 计算机系统简介1.3 计算机语言和程序设计方法的发展1.4 面向对象的基本概念1.5 程序的开发过程 计算机程序 程序是指令的集合 面向过程的语言&#xff1a;c语言 面向对象的语言&#xff1a;c、python、java 类继承多态 注释 // 两个相离最近的 /**/ 会结…

深度学习中的Epoch

深度学习中的Epoch 大家好&#xff0c;我是免费搭建查券返利机器人赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天&#xff0c;让我们一同探讨深度学习领域中不可或缺的概念之一——Epoch。 1. 什么是Epoch&…

pyDAL一个python的ORM(4) pyDAL查询操作

1 、简单查询 rows db(db.person.dept marketing).select(db.person.id, db.person.name, db.person.dept) rows db(db.person.dept marketing).select() rows db(db.person.dept marketing).select(db.person.ALL) rows db().select(db.person.ALL) / db(db.person).se…