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. HDU 6208 The Dominator of Strings ——(青岛网络赛,AC自动机)
  2. 如何使用Gradle的maven-publish将jar包或者war包上传到nexus仓库
  3. [XSY] 最长公共子串对(后缀自动机)
  4. C#多线程之旅(1)——介绍和基本概念
  5. 计算机总是无法响应怎么办,电脑无响应是怎么回事 电脑无响应解决方法
  6. Linux系统开发9 线程同步
  7. 广告投放系统数据表设计
  8. vs 2010 专业版 密钥
  9. C语言 逻辑运算符及其优先级
  10. 现代魔法学院——闲聊哈希表及哈希表的链地址法实现
  11. oracle 10015 trace name adjust_scn level level_num
  12. WCDMA常见缩略语
  13. 如何正确使用 Mac 电脑的“恢复模式”?
  14. 基于C语言的学生选课系统
  15. ClasssLoader
  16. 学生上课睡觉班主任怎么处理_学生上课睡觉,你能正确处理吗?
  17. Linux驱动开发(十五)---如何使用内核现有驱动(显示屏)
  18. line android 英文版,line tv国际版
  19. 基于ETest_D的火控系统电源组件自动测试仪国产化设计
  20. vue如何将图片压缩成webp格式并用webpack打包

热门文章

  1. 熟记四原则 白领远离亚健康
  2. Gene Ontology(GO)简介与使用介绍
  3. 英飞凌 AURIX 系列单片机的HSM详解(2)——与HSM相关的UCB和寄存器
  4. 享元模式:如果让你开发英雄联盟的兵线,你会怎么设计?
  5. PAYPAL规则以及防欺诈详解
  6. cloudcompare汉化包制作
  7. 华清远见重庆中心--java高级技术总结/个人总结
  8. Winform TextBox中只能输入数字的几种常用方法
  9. Oralce介绍与安装
  10. linux socket-recvfrom系统调用