运行天地图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,一经查实,立即删除!

相关文章

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开发中…

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 …

数据资产专题3:估值

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

飞企互联-FE企业运营管理平台 登录绕过漏洞复现

0x01 产品简介 飞企互联-FE企业运营管理平台是一个基于云计算、智能化、大数据、物联网、移动互联网等技术支撑的云工作台。这个平台可以连接人、链接端、联通内外&#xff0c;支持企业B2B、C2B与O2O等核心需求&#xff0c;为不同行业客户的互联网转型提供支持。 0x02 漏洞概…

【12.28】转行小白历险记-刷算法04

01两两交换链表中的节点 整体思路 1.要修改后一个节点的指向一定要知道前一个节点的指向才可以改变后面一个节点的 2.分情况奇数和偶数节点&#xff0c;终止条件很重要 3.虚拟头节点&#xff0c;是对我们操作的指针是不是头节点进行判断 02删除链表的倒数第N个节点 思路 …

QT应用篇 二、QML用Image组件实现Progress Bar 的效果

QT应用篇 一、QT上位机串口编程 二、QML用Image组件实现Progress Bar 的效果 三、QML自定义显示SpinBox的加减按键图片及显示值效果 文章目录 QT应用篇前言一、qml需求二、使用组件1.Image组件2.Image中fillMode的使用例子 总结 前言 记录自己学习QML的一些小技巧方便日后查找…

前端使用高德api的AMap.Autocomplete无效,使用AMap.Autocomplete报错

今天需要一个坐标拾取器&#xff0c;需要一个输入框输入模糊地址能筛选的功能 查看官方文档&#xff0c;有一个api可以直接满足我们的需求 AMap.Autocomplete 上代码 AMapLoader.load({"key": "你的key", // 申请好的Web端开发者Key&#xff0c;首次调…

C语言 linux文件操作(二)

文章目录 一、获取文件长度二、追加写入三、覆盖写入四、文件创建函数creat 一、获取文件长度 通过lseek函数&#xff0c;除了操作定位文件指针&#xff0c;还可以获取到文件大小&#xff0c;注意这里是文件大小&#xff0c;单位是字节。例如在file1文件中事先写入"你好世…

通过Python将PDF转为文本,快速提取PDF中的文字

快速高效地从PDF文档中提取信息对于专业人士来说非常重要。处理大量PDF文件时&#xff0c;将PDF转换为可编辑的文本格式可以节省时间和精力。而强大的Python语言正是在这些方面发挥其作用。利用Python中丰富的API&#xff0c;我们可以轻松在Python程序中将PDF转换为文本&#x…

第二证券:A股市场放量反弹 跨年行情或启动

沪指日线等级放量反弹&#xff0c;周四收中阳线成功站上20日均线&#xff0c;底部结构或可树立。创业板指大涨近4%&#xff0c;日线MACD出现底违反&#xff0c;多方动能较强&#xff0c;中等级反弹行情或在酝酿。月线来看&#xff0c;12月创业板指探底上升出现较长下影&#xf…

畅捷通的 Serverless 探索实践之路

作者&#xff1a;计缘&#xff0c;阿里云云原生架构师 畅捷通介绍 畅捷通是中国领先的小微企业财税及业务云服务提供商&#xff0c;成立于 2010 年。畅捷通在 2021 年中国小微企业云财税市场份额排名第一&#xff0c;在产品前瞻性及行业全覆盖方面领跑市场&#xff0c;位居中…

小型洗衣机怎么用?高质量的小型洗衣机推荐

清洗内衣内裤这些贴身衣物确实是一件比较头疼的事&#xff0c;有的小伙子由于工作的劳累通常在洗完澡后并不喜欢直接清洗内衣内裤&#xff0c;会存上几天再扔到洗衣机里&#xff0c;这样做是很不可取的&#xff0c;因为穿过的内裤很久不洗就会滋生细菌&#xff0c;另外&#xf…

AGV|RGV小车RFID传感器CNS-RFID-01/1S的RS232通讯联机方法

CNS-RFID-01/1S广泛应用于AGV小车&#xff0c;搬运机器人&#xff0c;无人叉车等领域&#xff0c;用于定位&#xff0c;驻车等应用&#xff0c;可通过多种通讯方式进行读写操作&#xff0c;支持上位机控制&#xff0c;支持伺服电机&#xff0c;PLC等控制设备联机&#xff0c;本…

CUDA驱动深度学习发展 - 技术全解与实战

全面介绍CUDA与pytorch cuda实战 关注TechLead&#xff0c;分享AI全维度知识。作者拥有10年互联网服务架构、AI产品研发经验、团队管理经验&#xff0c;同济本复旦硕&#xff0c;复旦机器人智能实验室成员&#xff0c;阿里云认证的资深架构师&#xff0c;项目管理专业人士&…

盘点 2023 公开的攻击面发现平台

针对可以直接购买并且明码标价的攻击面发现平台进行了对比&#xff0c;结果如下 测试用例&#xff1a; 企业&#xff08;某制造有限公司&#xff09;、高校&#xff08;某职业学院&#xff09; 测试对象&#xff1a; 零零信安攻击面管理平台 长亭云图极速版攻击面管理平台 …