vue2中引入cesium全步骤

news2024/11/22 19:53:46

1.npm 下载cesium建议指定版本下载,最新版本有兼容性问题

npm install cesium@1.95.0

2.在node_models中找到cesium将此文件下的Cesium文件复制出来放在项目的静态资源public中或者static中,获取去github上去下载zip包放在本地也可以

3.在index.html中引入js和css

<script src="./static/Cesium/Cesium.js"></script>
  <link rel="stylesheet" href="./static/Cesium/Widgets/widgets.css">

4.现在就可以在页面中打压cesium对象了如果有输出说明引入成功可以直接使用

<div id="my-map"></div>
 <div id="myModal" class="modal">
    <div id="modal-body">
    <div id="modelContent">
   .....自定义样式
<div>
</div>
</div>
mounted(){
   //设置token
            Cesium.Ion.defaultAccessToken = "cesium的token自己去官网申请";
            var lagObj = [6378137.0, 6378137.0, 6356752.3142451793];//定义地球形状
            Cesium.Ellipsoid.WGS84 = Object.freeze(new Cesium.Ellipsoid(lagObj[0], lagObj[1], lagObj[2]));
            const viewer = new Cesium.Viewer('my-map', {
                homeButton: false,
                sceneModePicker: false,
                baseLayerPicker: false, // 影像切换
                animation: false, // 是否显示动画控件
                infoBox: false, // 是否显示点击要素之后显示的信息
                selectionIndicator: false, // 要素选中框
                geocoder: false, // 是否显示地名查找控件
                timeline: false, // 是否显示时间线控件
                fullscreenButton: false,
                shouldAnimate: false,
                scene3DOnly: true, // 每个几何实例仅以3D渲染以节省GPU内存
                navigationHelpButton: false, // 是否显示帮助信息控件
                imageryProvider: new Cesium.UrlTemplateImageryProvider({
                    url: '',//地图背景链接
                    maximumLevel: 17,//瓦片图最大层级
                })
            });
            // 去掉logo
            viewer.cesiumWidget.creditContainer.style.display = "none";
            // 加载分割模型3dtitles
            const tileset = new Cesium.Cesium3DTileset({
            // 3DTiles文件夹的路径
                url: "/xxxxx/tileset.json",
            });
 // 创建一个Entity对象,表示标注点(多个标注点继续写就行会自动增加到 viewer.entities对象)
            viewer.entities.add({
                // 设置实体的位置 标注点显示在3D Tiles模型上方(8.0)
                position: Cesium.Cartesian3.fromDegrees(108.22690195918085, 36.01883508577498, 8.0), // 纬度, 经度
                // 标记图片
                billboard: {
                    image: '/static/model/address.png', // 图片的URL
                    scale: 0.1//图片缩放大小
                },
                description: '这里是北京市人民大会堂' // 鼠标悬浮时显示的描述
            });
// 创建一个屏幕空间事件处理器(增加标注点的点击弹框自定义样式)
            var handler = new Cesium.ScreenSpaceEventHandler(viewer.canvas);
            // 用于存储点击位置
            var lastClickPosition = null;
            var lon = null;
            var lat = null;
            handler.setInputAction(function (click) {
                const pickedObject = viewer.scene.pick(click.position);
                const { ellipsoid } = viewer.scene.globe;
                console.log(viewer.entities, 'viewer.entities++++')
                const cartesian = viewer.camera.pickEllipsoid(click.position, ellipsoid);
                const cartographic = ellipsoid.cartesianToCartographic(cartesian);
                if (Cesium.defined(pickedObject)) {
                    lon = Cesium.Math.toDegrees(cartographic.longitude);
                    lat = Cesium.Math.toDegrees(cartographic.latitude);
                    lastClickPosition = click.position;
                    // 显示模态框
                    showPopup(lastClickPosition);
                }
            }, Cesium.ScreenSpaceEventType.LEFT_CLICK);
            var modal = document.getElementById('myModal');
            var contentDiv = document.getElementById('modelContent');
            function showPopup(position) {
                // 清空模态框内容
                document.getElementById('modal-body').innerHTML = '';
                // 复制内容到模态框
                var cloneContent = contentDiv.cloneNode(true);
                document.getElementById('modal-body').appendChild(cloneContent);
                modal.style.display = "block";
                // 设置模态框的位置
                updatePopupPosition(position);
                // 添加关闭按钮事件监听
                document.querySelector('.close').addEventListener('click', function () {
                    modal.style.display = "none";
                });
            }
            // 更新弹窗位置
            function updatePopupPosition(position) {
                if (!position || !lastClickPosition) return;
                // 获取当前视图的屏幕边界
                var clientPosition = viewer.canvas.getBoundingClientRect();
                // 计算点击位置相对于浏览器窗口的位置
                var x = position.x - clientPosition.left;
                var y = position.y - clientPosition.top;
                // 设置模态框的位置
                modal.style.left = x + 'px';
                modal.style.top = y + 'px';
            }
            // 监听视图变化事件
            viewer.scene.postRender.addEventListener(function () {
                if (lastClickPosition) {
                    const Cartesian3Result = Cesium.Cartesian3.fromDegrees(lon, lat);
                    const Cartesian2Result222 = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, Cartesian3Result,);
                    updatePopupPosition(Cartesian2Result222);
                }
            });
            window.addEventListener('unload', function () {
                handler.destroy();
                viewer.destroy();
            });
  // 将3DTiles集添加到Cesium Viewer
            viewer.scene.primitives.add(tileset);
            // // 控制视角到模型位置  自适应大小添加new Cesium.HeadingPitchRange(0.0, -0.5, 0) 到viewer.zoomTo中
            viewer.zoomTo(tileset, new Cesium.HeadingPitchRange(0.0, -0.5, 0));
}

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

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

相关文章

数据结构(顺序栈——c语言实现)

栈的基本概念&#xff1a; 栈是限制在一端进行插入操作和删除操作的线性表&#xff08;俗称堆栈&#xff09;&#xff0c;允许进行操作的一端称为“栈顶”&#xff0c;另一固定端称为“栈底”&#xff0c;当栈中没有元素时称为“空栈” 特点&#xff1a;先进后出&#xff08;FI…

基于Windows系统用C++做一个点名工具

目录 一、前言 二、主要技术点 三、准备工作 四、主界面 1.绘制背景图 2、实现读取花名册功能 3.实现遍历花名册功能 4.实现储存功能 4.1创建数据库 4.2存储数据到数据库表 4.3读取数据库表数据 一、前言 人总是喜欢回忆过去&#xff0c;突然回忆起…

前端监控之sourcemap精准定位和还原错误源码

一、概述 在前端开发中&#xff0c;监控和错误追踪是确保应用稳定性和用户体验的重要环节。 随着前端应用的复杂性增加&#xff0c;JavaScript错误监控变得尤为重要。在生产环境中&#xff0c;为了优化加载速度和性能&#xff0c;前端代码通常会被压缩和混淆。这虽然提升了性…

算法编程题-排序

算法编程题-排序 比较型排序算法冒泡排序选择排序插入排序希尔排序堆排序快速排序归并排序 非比较型排序算法计数排序基数排序 本文将对七中经典比较型排序算法进行介绍&#xff0c;并且给出golang语言的实现&#xff0c;还包括基数排序、计数排序等非比较型的算法的介绍和实现…

Jenkins修改LOGO

重启看的LOGO和登录页面左上角的LOGO 进入LOGO存在的目录 [roottest-server01 svgs]# pwd /opt/jenkins_data/war/images/svgs [roottest-server01 svgs]# ll logo.svg -rw-r--r-- 1 jenkins jenkins 29819 Oct 21 10:58 logo.svg #jenkins_data目录是我挂载到了/opt目录&…

【MyBatisPlus·最新教程】包含多个改造案例,常用注解、条件构造器、代码生成、静态工具、类型处理器、分页插件、自动填充字段

文章目录 一、MyBatis-Plus简介二、快速入门1、环境准备2、将mybatis项目改造成mybatis-plus项目&#xff08;1&#xff09;引入MybatisPlus依赖&#xff0c;代替MyBatis依赖&#xff08;2&#xff09;配置Mapper包扫描路径&#xff08;3&#xff09;定义Mapper接口并继承BaseM…

云讷科技Kerloud无人飞车专利发布

云讷科技Kerloud无人飞车获得了“一种室内外两用的四旋翼无人飞车”的实用新型专利证书&#xff0c;作为科教社区第一款四旋翼飞车&#xff0c;这项技术结合了无人机和无人车的优势&#xff0c;提供了一种能够在多种环境下使用的多功能飞行器。 这项设计的优势如下&#xff…

Applied Intelligence投稿

一、关于手稿格式&#xff1a; 1、该期刊是一个二区的&#xff0c;模板使用Springer nature格式&#xff0c; 期刊投稿要求&#xff0c;详细期刊投稿指南&#xff0c;大部分按Soringernature模板即可&#xff0c;图片表格声明参考文献命名要求需注意。 2、参考文献&#xff…

Spark SQL大数据分析快速上手-完全分布模式安装

【图书介绍】《Spark SQL大数据分析快速上手》-CSDN博客 《Spark SQL大数据分析快速上手》【摘要 书评 试读】- 京东图书 大数据与数据分析_夏天又到了的博客-CSDN博客 Hadoop完全分布式环境搭建步骤-CSDN博客,前置环境安装参看此博文 完全分布模式也叫集群模式。将Spark目…

零基础上手WebGIS+智慧校园实例(1)【html by js】

请点个赞收藏关注支持一下博主喵&#xff01;&#xff01;&#xff01; 等下再更新一下1. WebGIS矢量图形的绘制&#xff08;超级详细&#xff01;&#xff01;&#xff09;&#xff0c;2. WebGIS计算距离&#xff0c; 以及智慧校园实例 with 3个例子&#xff01;&#xff01;…

[开源] 告别黑苹果!用docker安装MacOS体验苹果系统

没用过苹果电脑的朋友可能会对苹果系统好奇&#xff0c;有人甚至会为了尝鲜MacOS去折腾黑苹果。如果你只是想体验一下MacOS&#xff0c;这里有个更简单更优雅的解决方案&#xff0c;用docker安装MacOS来体验苹果系统。 一、项目简介 项目描述 Docker 容器内的 OSX&#xff08…

IDEA:2023版远程服务器debug

很简单&#xff0c;但是很多文档没有写清楚&#xff0c;wocao 一、首先新建一个远程jvm 二、配置 三、把上面的参数复制出来 -agentlib:jdwptransportdt_socket,servery,suspendn,address5005 四、然后把这串代码放到服务器中&#xff08;这里的0.0.0.0意思是所有IP都能访问&a…

卷积神经网络的padding是什么?如何计算?

文章目录 为什么需要padding&#xff1f;1.Valid Padding&#xff08;有效填充&#xff09;2.Same Padding&#xff08;相同填充&#xff09;2.1.如何计算padding&#xff1f;1. 计算总 padding2. 分配 padding&#xff1a; 2.2.举例子1. 步幅为 1 的 Same Padding2. 步幅不为 …

介绍一下strncmp(c基础)

strncmp是strcmp的进阶版 链接介绍一下strcmp(c基础)-CSDN博客 作用 比较两个字符串的前n位 格式 #include <string.h> strncmp (arr1,arr2,n); 工作原理&#xff1a;strcmp函数按照ACII&#xff08;字符编码顺序&#xff09;比较两个字符串。它从两个字符串的第一…

列出D3的所有交互方法,并给出示例

D3.js 提供了丰富的交互方法&#xff0c;可以用来增强图表的用户交互体验。以下是一些常用的交互方法及其示例&#xff1a; 1. 鼠标事件 on("mouseover", function) 用途: 当鼠标悬停在元素上时触发。示例:svg.selectAll(".bar").on("mouseover&qu…

丹摩征文活动 | AI创新之路,DAMODEL助你一臂之力GPU

目录 前言—— DAMODEL&#xff08;丹摩智算&#xff09; 算力服务 直观的感受算力提供商的强大​ 平台功能介绍​ 镜像选择 云磁盘创建 总结 前言—— 只需轻点鼠标,开发者便可拥有属于自己的AI计算王国 - 从丰富的GPU实例选择,到高性能的云磁盘,再到预配置的深度学习…

基于大数据爬虫数据挖掘技术+Python的网络用户购物行为分析与可视化平台(源码+论文+PPT+部署文档教程等)

#1024程序员节&#xff5c;征文# 博主介绍&#xff1a;CSDN毕设辅导第一人、全网粉丝50W,csdn特邀作者、博客专家、腾讯云社区合作讲师、CSDN新星计划导师、Java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和学生毕业项目实战,高校老…

六、卷积神经网络(CNN)基础

卷积神经网络&#xff08;CNN&#xff09;基础 前言一、CNN概述二、卷积层2.1 卷积2.2 步幅(Stride)2.3 填充(Padding)2.4 多通道卷积2.5 多卷积计算2.6 特征图大小计算2.7 代码演示 三、池化层3.1 池化层计算3.1.1 最大池化层3.1.2 平均池化层 3.2 填充(Padding)3.3 步幅(Stri…

国标GB28181视频平台EasyCVR视频融合平台H.265/H.264转码业务流程

在当今数字化、网络化的视频监控领域&#xff0c;大中型项目对于视频监控管理平台的需求日益增长&#xff0c;特别是在跨区域、多设备、高并发的复杂环境中。EasyCVR视频监控汇聚管理平台正是为了满足这些需求而设计的&#xff0c;它不仅提供了全面的管理功能&#xff0c;还支持…

Jmeter中的断言(四)

13--XPath断言 功能特点 数据验证&#xff1a;验证 XML 响应数据是否包含或不包含特定的字段或值。支持 XPath 表达式&#xff1a;使用 XPath 表达式定位和验证 XML 数据中的字段。灵活配置&#xff1a;可以设置多个断言条件&#xff0c;满足复杂的测试需求。 配置步骤 添加…