1、三维地球上添加图层

添加的图层会覆盖该区域的地图信息

//添加图层

var layers = viewer.scene.imageryLayers;

layers.addImageryProvider(new Cesium.SingleTileImageryProvider({

url : 'img/11.png',

rectangle : Cesium.Rectangle.fromDegrees(-18, -18,18, 18)//矩形两个顶点的想经纬度值

}));

2、标注

a、添加标注

在viewer的实体对象中有add()方法,通过add()方法去添加标注,在add()中传入对象,确定标注的配置对象,标注样式可以是多种多样,下面举了点,广告牌,文本三种标注。

viewer.entities.add({

id:id,

name : name,

position : Cesium.Cartesian3.fromDegrees(point.lng, point.lat),

//点样式

point : {

pixelSize : 5,

color : Cesium.Color.RED,

outlineColor : Cesium.Color.WHITE,

outlineWidth : 1

},

//立广告牌

/*billboard :{

image : 'img/11.png',

show : true, // default

width : 25, // default: undefined

height : 25 // default: undefined

},*/

//字体标签样式

label : {

text : text,

font : '14pt',

color : Cesium.Color.RED,

style: Cesium.LabelStyle.FILL_AND_OUTLINE,

outlineWidth : 1,

//垂直位置

//verticalOrigin : Cesium.VerticalOrigin.BUTTON,

//中心位置

pixelOffset : new Cesium.Cartesian2(0, 20)

}

});

b、添加的标注本身有默认事件:左键单击选中标注实体,双击镜头会直接跳转到标注地点。如果你不想要这种效果,你可以取消默认事件,自己定义。下面添加左键单击选取拾取,双击将相机飞到该实体上空一定高度中,具体步骤如下

1、取消双击默认效果

viewer.cesiumWidget.screenSpaceEventHandler.removeInputAction(Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);

2、自定义点击事件

function pickAndTrackObject(e) {

//双击操作

}

function pickAndSelectObject(e) {

//单击操作

}

viewer.cesiumWidget.screenSpaceEventHandler.setInputAction(pickAndSelectObject,Cesium.ScreenSpaceEventType.LEFT_CLICK);

viewer.cesiumWidget.screenSpaceEventHandler.setInputAction(pickAndTrackObject,Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);3、根据屏幕坐标拾取实体坐标

//拾取实体

function pickEntity(viewer,position) {

var picked=viewer.scene.pick(position);

if(picked){

var id=Cesium.defaultValue(picked.id,picked.primitive.id);

if(id instanceof Cesium.Entity){

return id;

}

}

return undefined;

}4、拾取到的实体坐标系为笛卡尔直角坐标系,将相机飞过去,需要操作经纬度坐标,中间需要转化坐标系

//将笛卡尔直角坐标系转化为经纬度坐标系

var wgs84=viewer.scene.globe.ellipsoid.cartesianToCartographic(entity.position._value);

//转化为经纬度

var long=Cesium.Math.toDegrees(wgs84.longitude);

var lat=Cesium.Math.toDegrees(wgs84.latitude);

完整代码如下:

function pickAndTrackObject(e) {

//双击操作

var entity=pickEntity(viewer,e.position);

if(entity){

//将笛卡尔直角坐标系转化为经纬度坐标系

var wgs84=viewer.scene.globe.ellipsoid.cartesianToCartographic(entity.position._value);

//转化为经纬度

var long=Cesium.Math.toDegrees(wgs84.longitude);

var lat=Cesium.Math.toDegrees(wgs84.latitude);

camera.flyTo( {

destination : Cesium.Cartesian3.fromDegrees(long, lat, 2000 ),//使用WGS84

orientation : {

heading : Cesium.Math.toRadians( 0 ),

pitch : Cesium.Math.toRadians( -90 ),

roll : Cesium.Math.toRadians( 0 )

},

duration : 3,//动画持续时间

complete : function()//飞行完毕后执行的动作

{

// addEntities();

canCont=true;

},

pitchAdjustHeight: -90, // 如果摄像机飞越高于该值,则调整俯仰俯仰的俯仰角度,并将地球保持在视口中。

maximumHeight:5000 // 相机最大飞行高度

} );

}

}

function pickAndSelectObject(e) {

//单击操作

viewer.selectedEntity= pickEntity(viewer,e.position)

}

//拾取实体

function pickEntity(viewer,position) {

var picked=viewer.scene.pick(position);

if(picked){

var id=Cesium.defaultValue(picked.id,picked.primitive.id);

if(id instanceof Cesium.Entity){

return id;

}

}

return undefined;

}

viewer.cesiumWidget.screenSpaceEventHandler.setInputAction(pickAndSelectObject,Cesium.ScreenSpaceEventType.LEFT_CLICK);

viewer.cesiumWidget.screenSpaceEventHandler.setInputAction(pickAndTrackObject,Cesium.ScreenSpaceEventType.LEFT_DOUBLE_CLICK);

cesium 文本标注被遮挡_Cesium三维地球标注相关推荐

  1. 【Cesium :功能】Cesium三维地球标注

    转载:Cesium三维地球标注 1.三维地球上添加图层 添加的图层会覆盖该区域的地图信息 //添加图层 var layers = viewer.scene.imageryLayers; layers. ...

  2. Cesium三维地球标注

    1.三维地球上添加图层 添加的图层会覆盖该区域的地图信息 //添加图层 var layers = viewer.scene.imageryLayers; layers.addImageryProvid ...

  3. cesium 文本标注被遮挡_Cesium中Primitive讲解

    前面介绍了entity方式绘制对象,现在我们开始接触primitive方式,primitive方式更接近渲染引擎底层,由于我对webgl知之甚少,因此primitive接口我现在也是一知半解,写这个博 ...

  4. cesium等高线_Cesium开源三维地球离线地图发布源码示例功能

    一.概述 Cesium开源三维地球离线地图发布源码提供了地图切换.查询定位.模型加载.专题图叠加显示和测量功能等,旨在为用户提供一个可以在Cesium快速加载离线地图或在线地图的解决方案,并提供技术支 ...

  5. Cesium开源三维地球离线地图发布源码示例功能

    一.概述 Cesium开源三维地球离线地图发布源码提供了地图切换.查询定位.模型加载.专题图叠加显示和测量功能等,旨在为用户提供一个可以在Cesium快速加载离线地图或在线地图的解决方案,并提供技术支 ...

  6. Cesium三维开发笔记(一、加载三维地球)

    目前WebGIS的方向逐渐在从二维地球像三维地球转变,作为一个GISer,三维开发技术也是必须要掌握的一门技术了,Cesium是一个开源的三维地图开发包,是目前市面上用的非常多的一个包,接下来我们就一 ...

  7. 如何用Tomcat布署Cesium开源三维地球

    1.下载安装Tomcat服务器软件. 2.将Cesium源码解压之后,复制到Tomcat安装目录下的webapps目录. 3.双击bin目录下的"Tomcat9w.exe",可打开 ...

  8. cesium环境搭建(创建三维地球)

    cesium是一个用于开发三维地球的开源javascript库.下面就来讲解cesium的环境配置来实现helloworld. 环境配置 一.下载cesium包. 可以从github下载源码包,也从官 ...

  9. cesium加载百度地图_Cesium专栏-百度地图加载(附源码下载)

    Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以 ...

最新文章

  1. 阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一锅端
  2. Django用来作为爬虫框架浅谈
  3. 计算机技术在职研究生学校,计算机技术在职研究生招生2020
  4. MRI炎症和结构损伤指标对TNF拮抗剂治疗AS患者获持续缓解的预测价值
  5. ajax多文件上传,js限制上传文件大小,文件上传前在浏览器展示
  6. 洛谷——P1605 迷宫
  7. Python模块——subprocess
  8. React开发(151):外部引入记得导出
  9. canvas笔记-canvas适应浏览器(填充整个页面)
  10. THOR:MindSpore 自研高阶优化器源码分析和实践应用
  11. Netbean6.1中svn配置
  12. JAVA 实现批量PDF 打印,线程池多线程执行(附完整代码)
  13. 使用序列号激活优动漫PAINT(附激活码)
  14. Ruff 将助力广东金融高新区“区块链+”金融科技创新与应用落地
  15. rhel7 卡在sda assuming drive cache write through不能进入操作系统的一个解决方案
  16. RV1126 Linux 以太网MAC PHY 芯片8201f gmac dts配置
  17. 基于Android的班级同学录校友录系统app
  18. 2019智能手表推荐_2020年买什么智能手表合适?
  19. 月工资5k,除去生活每个月怎样存钱?
  20. scala groupby用法

热门文章

  1. Implementation Patterns
  2. ai绘画生成软件哪个好?分享几个ai绘画软件
  3. 6S大气校正模型说明
  4. python输出成绩单_学生成绩统计汇总(用python实现)
  5. 中国电子学会2022年06月份青少年软件编程Scratch图形化等级考试试卷三级真题(含答案)
  6. VC 最爱问的问题:你这个创业项目,如果腾讯跟进了,而且几乎是产品上完全复制,你会怎么办?
  7. android 的MVP模式的介绍
  8. 关于我在字节跳动青训营做了个抖音这件事
  9. rsync工作机制(翻译)
  10. MacBook Pro电池校正