摘要:http://www.cnblogs.com/giserhome/p/6248858.html该篇文章实现的自定义气泡窗口是基于修改cesium源代码基础上,这种做法只是援兵之计,凑合应付的,投机取巧罢了,实际上是不太适合的,cesiumapi更新版本替换,又得手动的去设置一下源代码;本篇则是从另一个角度真正的实现了自定义气泡窗口,气泡窗口的样式定义则是leaflet风格的,效果截图如下:具体实现思路:1.气泡窗口css样式/*leaflet风格气泡窗口样式模板*/.leaflet-popup{position:absolute;text-align:center;}.leaflet-popup-close-button{position:absolute;top:0;right:0;padding:4px4px00;text-align:center;width:18px;height:

http://www.cnblogs.com/giserhome/p/6248858.html

该篇文章实现的自定义气泡窗口是基于修改cesium源代码基础上,这种做法只是援兵之计,凑合应付的,投机取巧罢了,实际上是不太适合的,cesium api更新版本替换,又得手动的去设置一下源代码;本篇则是从另一个角度真正的实现了自定义气泡窗口,气泡窗口的样式定义则是leaflet风格的,效果截图如下:

具体实现思路:

1.气泡窗口css样式

/*leaflet风格气泡窗口样式模板*/

.leaflet-popup {

position: absolute;

text-align: center;

}

.leaflet-popup-close-button {

position: absolute;

top: 0;

right: 0;

padding: 4px 4px 0 0;

text-align: center;

width: 18px;

height: 14px;

font: 16px/14px Tahoma, Verdana, sans-serif;

color: #c3c3c3;

text-decoration: none;

font-weight: bold;

background: transparent;

}

.leaflet-popup-content-wrapper {

text-align: center;

max-height: 200px;

overflow-y: auto;

background: white;

box-shadow: 0 3px 14px rgba(0,0,0,0.4);

padding: 1px;

text-align: left;

border-radius: 12px;

}

.leaflet-popup-content {

margin: 13px 19px;

line-height: 1.4;

}

.leaflet-popup-tip-container {

margin: 0 auto;

width: 40px;

height: 20px;

position: relative;

overflow: hidden;

}

.leaflet-popup-tip {

background: white;

box-shadow: 0 3px 14px rgba(0,0,0,0.4);

width: 17px;

height: 17px;

padding: 1px;

margin: -10px auto 0;

-webkit-transform: rotate(45deg);

-moz-transform: rotate(45deg);

-ms-transform: rotate(45deg);

-o-transform: rotate(45deg);

transform: rotate(45deg);

}

2.气泡窗口div面板

//动态添加气泡窗口DIV

var infoDiv = '

'+

'

'+

'×'+

'

'+

'

'

'+

'

'+

'

'

'+

'

'+

'

';

$("#"+cesium.mapDivId).append(infoDiv);

气泡窗口div面板看实际情况的,也可以设置在页面html里面,我这里由于需要,是在js动态添加进来的。

3.核心的实现思路部分:如何动态刷新气泡窗口的位置

(1)cesium的点击事件Cesium.ScreenSpaceEventType.LEFT_CLICK监听鼠标的当前位置坐标,然后根据当前坐标去动态更新气泡窗口div的显示位置;

(2)监听cesium的postRender变化事件,这里特别关键,因为你拖拽球体移动,气泡窗口div也要对应移动的,气泡窗口的位置变化跟cesium球体是要动态刷新的;

附上部分关键代码:

cesium点击事件,获取当前位置

handler3D.setInputAction(function(movement) {

//点击弹出气泡窗口

var pick = cesium.cesiumViewer.scene.pick(movement.position);

if(pick && pick.id){//选中某模型

}

else{

$('#trackPopUp').hide();

}

}, Cesium.ScreenSpaceEventType.LEFT_CLICK);

//加载3D模型

新气泡窗口的位置更新

function positionPopUp (c) {

var x = c.x - ($('#trackPopUpContent').width()) / 2;

var y = c.y - ($('#trackPopUpContent').height());

$('#trackPopUpContent').css('transform', 'translate3d(' + x + 'px, ' + y + 'px, 0)');

}

postRender变化事件

var removeHandler = viewer.scene.postRender.addEventListener(function () {

var changedC = Cesium.SceneTransforms.wgs84ToWindowCoordinates(viewer.scene, id._position._value);

// If things moved, move the popUp too

if ((c.x !== changedC.x) || (c.y !== changedC.y)) {

c = changedC;

}

});

cesium 局部加载_cesium自定义气泡窗口infoWindow后续优化篇 - GIS之家相关推荐

  1. cesium 之自定义气泡窗口 infoWindow 后续优化篇(附源码下载)

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 该 ...

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

    展示示例图: Cesium自定义HTML弹窗 核心的实现思路部分: (1)cesium 的点击事件 Cesium.ScreenSpaceEventType.LEFT_CLICK 监听左键单击鼠标事件获 ...

  3. cesium 局部加载_Cesium(四)常用代码总结

    1.阴影效果 viewer.shadows = true; 2.取消左键双击事件 viewer.cesiumWidget.screenSpaceEventHandler.removeInputActi ...

  4. cesium 之自定义气泡窗口 infoWindow 篇

    前言 cesium 官网的api文档介绍地址cesium官网api,里面详细的介绍 cesium 各个类的介绍,还有就是在线例子:cesium 官网在线例子,这个也是学习 cesium 的好素材. 自 ...

  5. cesium首次加载gltf模型成功

    接此: https://blog.csdn.net/bcbobo21cn/article/details/111305160 根据资料gltf格式模型可以直接在cesium上加载: 网上搜索gltf, ...

  6. cesium 3dtiles 加载本地数据_记一次Cesium地形数据生成过程

    问题描述 有一小块带高程值的点状数据,需要根据该数据生成Cesium支持的3dtiles数据,在Cesium中显示.经过一周多时间的摸索,终于能够在Cesium中加载成功.现将数据处理流程做个记录,以 ...

  7. jQuery中的ajax、jquery中ajax全局事件、load实现页面无刷新局部加载、ajax跨域请求jsonp、利用formData对象向服务端异步发送二进制数据,表单序列化(异步获取表单内容)

    jQuery中使用ajax: 在jQuery中使用ajax首先需要引入jQuery包,其引入方式可以采用网络资源,也可以下载包到项目文件中,这里推荐下载包到文件中:市面上有多个版本的jQuery库,这 ...

  8. cesium 直接加载 geotiff 影像图

    前言 最近碰到了一个需求,需要通过 cesium 直接加载 geotiff 影像图. 咋一听,这个需求好像蛮奇怪,cesium 本身本来就支持加载 tile 影像图,也就是所谓的切片地图.原理其实就是 ...

  9. Cesium Primitives加载大量图标点

    Cesium Primitives加载大量图标点 前言 效果 关键代码 前言 使用entity的方式加载大量图标点会出现卡顿现象,cesium提供了BillboardCollection可以实现大量图 ...

最新文章

  1. [Leetcode] Simplify Path
  2. (七)OpenStack---M版---双节点搭建---Dashboard安装和配置
  3. Java8 lambda函数式编程
  4. C# winform 上传文件到服务器
  5. 一天一个设计模式之建造者模式(Builder)
  6. [译]看漫画学Flux
  7. 分享一个Ubuntu16.0.4安装MySQL5.7脚本
  8. 读取Excel任务列表并显示在Outlook日历上
  9. 按学号查找学生信息 用c语言表达,学生信息管理系统C语言编程.docx
  10. 如何使用AForge调用本机摄像头
  11. 双网卡服务器实现内外网访问
  12. RSA 加解密(Java 实现)
  13. Transformer12
  14. pc端1号店项目用JQ实现二级菜单和轮播图
  15. 引领企业电销革新,外呼系统是不可缺的电销工具
  16. JS对于字符串的切割截取
  17. Linux下利用nc命令来监控检测服务器的端口使用情况
  18. linux下查找某文件/文件夹所在的位置
  19. Windows 7系统盘清理
  20. 如何在公司里体现前端的价值以及提升自己的议价能力

热门文章

  1. 光纤 matlab,matlab – 均衡光纤通道的最小均方
  2. java mysql websocket_javaweb-ajax-websocket-mysql
  3. haspusersetup 安装后har 蓝屏_电脑蓝屏90%的人不知道怎么办?
  4. Linux源码安装pgadmin4,Linux 服务器部署 PgAdmin 4 Server
  5. Spring Cloud 之 Ribbon,Spring RestTemplate 调用服务
  6. TCA9548A iic地址扩展器件 树莓派JAVA版教程
  7. 小学三年级计算机导学案,小学三年级学科导学案.doc
  8. LGBM分类模型预测
  9. django前端模板循环多个list
  10. linux 服务器 iptables 防止arp病毒,linux环境下防arp解决方法