cesium 局部加载_Cesium自定义HTML弹窗

展示示例图:

Cesium自定义HTML弹窗

核心的实现思路部分:

(1)cesium 的点击事件 Cesium.ScreenSpaceEventType.LEFT_CLICK 监听左键单击鼠标事件获取当前位置坐标,然后根据当前笛卡尔坐标去确认气泡窗口div的显示位置;

(2)监听 cesium 的 postRender 每一帧变化的监听事件,该事件就是为了确认你在转动球体时,气泡只定位到当前位置,不会出现偏差,该事件每帧的移动时,重新对气泡进行重新定位,屏幕坐标到笛卡尔坐标的转换。

1.左键鼠标单击监听事件

//获取当前点击的位置坐标

var handler = new Cesium.ScreenSpaceEventHandler(viewer.scene.canvas);

handler.setInputAction(function(movement) {

/* var windowPosition = viewer.camera.getPickRay(movement.position);

var cartesianCoordinates = viewer.scene.globe.pick(windowPosition, viewer.scene);

var cartoCoordinates = viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesianCoordinates); */

var cartesian2 = viewer.camera.pickEllipsoid(movement.position, viewer.scene.globe.ellipsoid);

var carto2 = viewer.scene.globe.ellipsoid.cartesianToCartographic(cartesian2);

latitude = carto2.latitude * 180 / Math.PI;

longitude = carto2.longitude * 180 / Math.PI;

//alert("纬度:"+latitude+","+"经度:"+longitude);

var cartesian = viewer.scene.pickPosition(movement.position);

//弹窗 参数

var paramObj = {

id: 'trackPopUpContent',

HTMLdiv: '

' +

'

' +

'

',

Offset: {

x: 0,

y: 0

},

coordinate: cartesian, //笛卡尔坐标参数

lineStyle: {

Linewidth: 3,

Lineheight: 25,

Linebackground: '#409EFF'

},

CircleStyle: {

Circleradius: 8,

Circlecolor: '#409EFF'

},

heighthidenum: 1000, //高度隐藏值

}

//固定弹窗 位置

PopupCoordinatePositioning(paramObj);

}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

2.地图每一帧变化的监听事件

viewer.scene.postRender.addEventListener(function() { // 每一帧都去计算气泡的正确位置

if (Popups.length > 0) {

for (var i = 0; i < Popups.length; i++) {

var infoboxContainer = document.getElementById(Popups[i].PopupsID); //morphComplete

if (infoboxContainer != null) {

//var infoboxContainer = document.getElementById("bubble");//morphComplete

if (Popups[i].scenePosition) {

var canvasHeight = viewer.scene.canvas.height;

var windowPosition = new Cesium.Cartesian2();

Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, Popups[i].scenePosition, windowPosition);

infoboxContainer.style.bottom = (canvasHeight - windowPosition.y + Popups[i].paramObj.Offset.y) + 'px';

infoboxContainer.style.left = (windowPosition.x + -(infoboxContainer.scrollWidth / 2)) + 'px';

}

}

}

}

});

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

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

相关文章

ABC334 A-F

打的很懒的一场B卡了D看不懂题卡了F没看完题目理解错题意了&#xff0c;状态好差XD UNIQUE VISION Programming Contest 2023 Christmas (AtCoder Beginner Contest 334) - AtCoder A - Christmas Present 题意&#xff1a; 给出两个数B, G问哪个大 题解&#xff1a; 凑数…

小学计算机集体备课,小学信息技术集体备课.doc

小学信息技术集体备课学信息技术集体备课( 信息技术)学科教案2014年 9月 日课题月亮的味道——插入图片集体备课曹婷付欢加孜拉教材版本人教版四年级(上册)课型新授课时1教学手段计算机教学教学目标 [知识与技能]学会在word中插入图片&#xff0c;设置图片大小以及环绕方式。[过…

浏览器不支持flash插件之后,h5播放rtmp直播流的解决方案

文章目录背景几种视频流比较http-flv搭配flv.js播放方案rtmp与http-flv地址格式flv.js延迟问题flv.js的并发直播在线测试地址&#xff1a;JavaCV转封装rtsp到rtmp&#xff08;无需转码&#xff0c;低资源消耗&#xff09; 海康sdk捕获码流数据通过JavaCV推成rtmp流的实现思路(P…

华为笔记本matebook13_华为引领“第三代移动办公”新纪元 华为MateBook开启“智慧化办公”新赛道...

&#xfeff;运营商财经网 康钊/文移动互联网的快速兴起&#xff0c;让办公形式不再受时间、地点的限制&#xff0c;笔记本电脑、平板电脑、手机等承担生产力工具作用的电子设备也是越来越多样化&#xff0c;“移动办公”正成为一种不断演化市场趋势。然而&#xff0c;随着移动…

计算机数学 考研真题及答案,北大计算机系考研历年高等数学真题附答案.docx

PAGEPAGE 10北大计算机考研 高等数学真题解答2008 年(5 题 60 分)1 (12 分) f (x) 有连续的二阶导数&#xff0c; f (a)  0 &#xff0c;求limxa1f (x  a)  f (a)1f (a) 。2 (12 分) f (x) 在a,b上连续且 f (a)  f (b)  0 &#xff0c; f (a) f (b) …

IPv4地址和IPv6地址的比较,IPv6地址及其表示

IPv4地址和IPv6地址的比较&#xff0c;IPv6地址及其表示 TCP/IP协议是互联网发展的基石&#xff0c;其中IP是网络层协议&#xff0c;规范互联网中分组信息的交换和选路。目前采用的IPv4协议地址长度为32位&#xff0c;总数约43亿个IPv4地址已分配殆尽。 IPv6是IP地址的第六版…

MySQL如何有效的存储IP地址

文章目录序言工具类实现转换数据库函数实现转换一、IP地址应该怎么存二、整数存储 IP 地址的查询性能实验1、测试范围查询&#xff1a;2、IP精确查询&#xff1a;3、整理一下结果发现&#xff1a;总结首先就来阐明一下部分人得反问&#xff1a;为什么要问IP得知怎样存&#xff…

ab753变频器参数怎么拷贝到面板_变频器怎么设置参数?变频器的基本参数设定...

电工学习网&#xff1a;www.diangon.com技术驱动未来&#xff0c;关注电工学习网官方微信公众号“电工电气学习”&#xff0c;收获更多经验知识。变频器在工业生产中应用及其重要&#xff0c;其除了调速&#xff0c;软启动作用外&#xff0c;最重要的是可以节能。变频器功能参数…

卢克增加服务器,DNF卢克跨区服务器崩溃?策划:暗制造者临时加入安图恩攻坚...

原标题&#xff1a;DNF卢克跨区服务器崩溃&#xff1f;策划&#xff1a;暗制造者临时加入安图恩攻坚DNF作为一款即时在线&#xff0c;2d网络游戏&#xff0c;决斗场系统延伸到早期60级版本组队刷图。玩家与玩家之间互动&#xff0c;即时刷图跨区&#xff0c;成为了阿拉德大陆一…

使用TortoiseGit(小乌龟)操作分支的创建

现在的我的github库上面只有一个master分支 由于是穷屌丝用不起mac&#xff0c;所以我windows为例进行相应的演示&#xff1a; 下图就是本地使用小乌龟的版本管理工具在只有一个分支的情况下执行命令&#xff1a;Switch/Checkout 显示的内容。 下面分为三个步骤进行创建分支操…

计算机丢失d3dcompile,电脑d3dcompiler43.dll文件丢失怎么办 文件丢失解决方法

最近有位用户私信给小编&#xff0c;说他在使用电脑的时候&#xff0c;电脑一直弹出丢失d3dcompiler43.dll文件的弹窗。就算是关闭&#xff0c;下次开机依旧会弹出这样的窗口&#xff0c;十分厌烦。那丢失电脑中的d3dcompiler43.dll文件应该怎么办呢&#xff1f;其实也不难&…

python中最难的是什么_Python 最难的问题你猜是什么?

超过十年以上&#xff0c;没有比解释器全局锁(GIL)让Python新手和专家更有挫折感或者更有好奇心。未解决的问题随处都是问题。难度大、耗时多肯定是其中一个问题。仅仅是尝试解决这个问题就会让人惊讶。之前是整个社区的尝试&#xff0c;但现在只是外围的开发人员在努力。对于新…

mybatis plus 导出sql_软件更新丨mybatis-plus 3.0.7 发布,辞旧迎新

点击右上方&#xff0c;关注开源中国OSC头条号&#xff0c;获取最新技术资讯Mybatis-Plus 是一款 Mybatis 动态 SQL 自动注入 Mybatis 增删改查 CRUD 操作中间件&#xff0c; 减少你的开发周期优化动态维护 XML 实体字段&#xff0c;无入侵全方位 ORM 辅助层让您拥有更多时间陪…

文件服务器映驱动,映射驱动程序文件 - Windows drivers | Microsoft Docs

映射驱动程序文件05/13/2020本文内容替换驱动程序文件可能会很困难。 通常&#xff0c;必须启动到 Microsoft Windows 安全生成&#xff0c;替换驱动程序二进制文件&#xff0c;然后重新启动。使用映射文件存在替代方法。 您可以使用此映射方法替换任何内核模式驱动程序 (包括显…

JAVA设计模式——概述

**设计模式&#xff08;Design pattern&#xff09;**是一套被反复使用的、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码可靠性。项目中合理地运用设计模式可以完美地解决很多问题。 设计模式的六大原则…

yb3防爆电机型号含义_yb3防爆电机型号含义有哪些?

YB3防爆电机型号中包含了这个系列电机的一些相对信息,每个电机都有其型号系列,将它们的功用功能规格参数进行相应的分隔,防爆电机的的型号系列也可以说是防爆电机的技能综合证,防爆电机有了它的型号系列更能找到它的适用场所。YB3系列的防爆电机的系列含义如下YB3系列防爆电机是…

网站服务器怎么用手机登录不了怎么办,怎么打不开服务器列表了?

2011-04-19网页图片打不开是不是中毒呢&#xff1f;以前网页中没有图片、视频、动画、声音。打开IE选工具/Internet选项/高级/在设置的下拉列表&#xff0c;勾选“播放网页中的动画”“播放网页中的声音”“播放网页中的视频”“显示图片”(也可以直接选择高级中下面的“还原默…

RedisTemplate常用集合使用说明(一)

在这里我使用的是spring-boot框架组合的redisTemplate的jar包spring-boot-starter-data-redis&#xff0c;采用POM的方式引入&#xff0c;引入代码如下: <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent…

idea调试怎么跳出循环_IDEA调试技巧条件断点实现步骤详解

调试的时候&#xff0c;在循环里增加条件判断&#xff0c;可以极大的提高效率&#xff0c;心情也能愉悦。以下介绍下IDEA使用条件【Condition】断点的方法1、编写一段样例代码/*** author jiashubing* since 2017/11/13*/public class Test {public static void main(String[] …

RedisTemplate常用集合使用说明-opsForValue(二)

​ 基础配置介绍已经在前面的《RedisTemplate常用集合使用说明(一)》中已经介绍了&#xff0c;现在我们直接介绍opsForValue()方法的使用&#xff1a; 1、set(K key, V value) ​ 新增一个字符串类型的值,key是键&#xff0c;value是值。 redisTemplate.opsForValue().set(&…