cesium 文本标注被遮挡_Cesium三维地球标注
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三维地球标注相关推荐
- 【Cesium :功能】Cesium三维地球标注
转载:Cesium三维地球标注 1.三维地球上添加图层 添加的图层会覆盖该区域的地图信息 //添加图层 var layers = viewer.scene.imageryLayers; layers. ...
- Cesium三维地球标注
1.三维地球上添加图层 添加的图层会覆盖该区域的地图信息 //添加图层 var layers = viewer.scene.imageryLayers; layers.addImageryProvid ...
- cesium 文本标注被遮挡_Cesium中Primitive讲解
前面介绍了entity方式绘制对象,现在我们开始接触primitive方式,primitive方式更接近渲染引擎底层,由于我对webgl知之甚少,因此primitive接口我现在也是一知半解,写这个博 ...
- cesium等高线_Cesium开源三维地球离线地图发布源码示例功能
一.概述 Cesium开源三维地球离线地图发布源码提供了地图切换.查询定位.模型加载.专题图叠加显示和测量功能等,旨在为用户提供一个可以在Cesium快速加载离线地图或在线地图的解决方案,并提供技术支 ...
- Cesium开源三维地球离线地图发布源码示例功能
一.概述 Cesium开源三维地球离线地图发布源码提供了地图切换.查询定位.模型加载.专题图叠加显示和测量功能等,旨在为用户提供一个可以在Cesium快速加载离线地图或在线地图的解决方案,并提供技术支 ...
- Cesium三维开发笔记(一、加载三维地球)
目前WebGIS的方向逐渐在从二维地球像三维地球转变,作为一个GISer,三维开发技术也是必须要掌握的一门技术了,Cesium是一个开源的三维地图开发包,是目前市面上用的非常多的一个包,接下来我们就一 ...
- 如何用Tomcat布署Cesium开源三维地球
1.下载安装Tomcat服务器软件. 2.将Cesium源码解压之后,复制到Tomcat安装目录下的webapps目录. 3.双击bin目录下的"Tomcat9w.exe",可打开 ...
- cesium环境搭建(创建三维地球)
cesium是一个用于开发三维地球的开源javascript库.下面就来讲解cesium的环境配置来实现helloworld. 环境配置 一.下载cesium包. 可以从github下载源码包,也从官 ...
- cesium加载百度地图_Cesium专栏-百度地图加载(附源码下载)
Cesium 是一款面向三维地球和地图的,世界级的JavaScript开源产品.它提供了基于JavaScript语言的开发包,方便用户快速搭建一款零插件的虚拟地球Web应用,并在性能,精度,渲染质量以 ...
最新文章
- 阻塞、非阻塞、多路复用、同步、异步、BIO、NIO、AIO 一锅端
- Django用来作为爬虫框架浅谈
- 计算机技术在职研究生学校,计算机技术在职研究生招生2020
- MRI炎症和结构损伤指标对TNF拮抗剂治疗AS患者获持续缓解的预测价值
- ajax多文件上传,js限制上传文件大小,文件上传前在浏览器展示
- 洛谷——P1605 迷宫
- Python模块——subprocess
- React开发(151):外部引入记得导出
- canvas笔记-canvas适应浏览器(填充整个页面)
- THOR:MindSpore 自研高阶优化器源码分析和实践应用
- Netbean6.1中svn配置
- JAVA 实现批量PDF 打印,线程池多线程执行(附完整代码)
- 使用序列号激活优动漫PAINT(附激活码)
- Ruff 将助力广东金融高新区“区块链+”金融科技创新与应用落地
- rhel7 卡在sda assuming drive cache write through不能进入操作系统的一个解决方案
- RV1126 Linux 以太网MAC PHY 芯片8201f gmac dts配置
- 基于Android的班级同学录校友录系统app
- 2019智能手表推荐_2020年买什么智能手表合适?
- 月工资5k,除去生活每个月怎样存钱?
- scala groupby用法