Cesium快速上手10-Viewer Entities组合

摘要:
src=Box.html&label=Geometriesimage.pngbox就是立方体cylinder是圆锥圆柱varviewer=newCesium.Viewer;varblueBox=viewer.entities.add;varredBox=viewer.entities.add;varoutlineOnly=viewer.entities.add;viewer.zoomTo;圆锥圆柱http://localhost:8080/Apps/Sandcastle/index.html?src=Cylinders%20and%20Cones.html&label=Geometriesimage.pngtopRadius=bottomRadius是圆柱topRadius=0,bottomRadius大于0是圆锥varviewer=newCesium.Viewer;vargreenCylinder=viewer.entities.add;varredCone=viewer.entities.add;viewer.zoomTo;API文档EntityCesium.EntityCollection对比primitives与Entity与primitives相比,entity使用更简便。一个entity可能是由多个primitives组合完成的。entity内部实现的时候还是用primitives实现的;entity更高层一点。image.png实现同样的效果,比较两种实现方式primitive方式entity方式Datasource结构image.png每一个Datasource都挂在Entity下;geojsonhttp://localhost:8080/Apps/Sandcastle/index.html?

Viewer/Entities的作用:

方便创建直观的对象,同时做到性能优化(billboard、point等)
提供一些方便使用的函数:flyTo/zoomTo
赋予Entity对象时间这个属性,对象具备动态特性/Primitive不具备
提供一些UI(homeButton/sceneModePicker/projectionPicker/baseLayerPicker)
大量的快捷方式,camera等未必是好事。。
Datasource模式来加载大规模数据:Geojson
Datasource结构
Entities是一个快捷方式,其实返回的是viewer.dataSourceDisplay.defaultDatasource.entities ;

Entity结构

Cesium快速上手10-Viewer Entities组合第1张

image.png

var viewer = new Cesium.Viewer('cesiumContainer');

示例 可参考 Geometries

Cesium快速上手10-Viewer Entities组合第2张

image.png

box示例

http://localhost:8080/Apps/Sandcastle/index.html?src=Box.html&label=Geometries

Cesium快速上手10-Viewer Entities组合第3张

image.png

box 就是立方体
cylinder 是圆锥 圆柱

var viewer = new Cesium.Viewer('cesiumContainer');

var blueBox = viewer.entities.add({
    name : 'Blue box',
    position: Cesium.Cartesian3.fromDegrees(-114.0, 40.0, 300000.0),
    box : {
        dimensions : new Cesium.Cartesian3(400000.0, 300000.0, 500000.0),
        material : Cesium.Color.BLUE
    }
});

var redBox = viewer.entities.add({
    name : 'Red box with black outline',
    position: Cesium.Cartesian3.fromDegrees(-107.0, 40.0, 300000.0),
    box : {
        dimensions : new Cesium.Cartesian3(400000.0, 300000.0, 500000.0),
        material : Cesium.Color.RED.withAlpha(0.5),
        outline : true,
        outlineColor : Cesium.Color.BLACK
    }
});

var outlineOnly = viewer.entities.add({
    name : 'Yellow box outline',
    position: Cesium.Cartesian3.fromDegrees(-100.0, 40.0, 300000.0),
    box : {
        dimensions : new Cesium.Cartesian3(400000.0, 300000.0, 500000.0),
        fill : false,
        outline : true,
        outlineColor : Cesium.Color.YELLOW
    }
});

viewer.zoomTo(viewer.entities);

圆锥 圆柱

http://localhost:8080/Apps/Sandcastle/index.html?src=Cylinders%20and%20Cones.html&label=Geometries

Cesium快速上手10-Viewer Entities组合第4张

image.png

topRadius = bottomRadius 是圆柱
topRadius=0, bottomRadius 大于0 是圆锥

var viewer = new Cesium.Viewer('cesiumContainer');

var greenCylinder = viewer.entities.add({
    name : 'Green cylinder with black outline',
    position: Cesium.Cartesian3.fromDegrees(-100.0, 40.0, 200000.0),
    cylinder : {
        length : 400000.0,
        topRadius : 200000.0,
        bottomRadius : 200000.0,
        material : Cesium.Color.GREEN.withAlpha(0.5),
        outline : true,
        outlineColor : Cesium.Color.DARK_GREEN
    }
});

var redCone = viewer.entities.add({
    name : 'Red cone',
    position: Cesium.Cartesian3.fromDegrees(-105.0, 40.0, 200000.0),
    cylinder : {
        length : 400000.0,
        topRadius : 0.0,
        bottomRadius : 200000.0,
        material : Cesium.Color.RED
    }
});

viewer.zoomTo(viewer.entities);

API文档

Entity
Cesium.EntityCollection

对比primitives 与Entity

    1. 与primitives 相比,entity 使用更简便。一个entity可能是由多个primitives组合完成的。
    1. entity内部实现的时候还是用primitives实现的;entity更高层一点。primitive需要关注更多的细节;
  • 3.单个Primitive只能绑定一个材质Appearance,所有的GeometryInstance都使用这一个Appearance;要更换不同的Appearance,就得用不同的Primitive;初始化时还涉及坐标旋转以使绘制的图形在地图表面显示出来。

Cesium快速上手10-Viewer Entities组合第5张

image.png

实现同样的效果,比较两种实现方式
primitive方式
entity方式

Datasource结构

Cesium快速上手10-Viewer Entities组合第6张

image.png

每一个Datasource都挂在Entity下;

geojson

http://localhost:8080/Apps/Sandcastle/index.html?src=GeoJSON%20and%20TopoJSON.html&label=DataSources

Cesium快速上手10-Viewer Entities组合第7张

image.png

http://localhost:8080/Apps/Sandcastle/index.html?src=GeoJSON%20simplestyle.html&label=DataSources

Cesium快速上手10-Viewer Entities组合第8张

image.png

Custom DataSource 自定义数据源格式

http://localhost:8080/Apps/Sandcastle/index.html?src=Custom%20DataSource.html&label=DataSources

Cesium快速上手10-Viewer Entities组合第9张

image.png

其他

  • flyTo
    viewer.flyTo(target, options) 直接飞到目标物上,如3dTiles ; 异步操作,若目前没有目标数据,会等待目标准备好之后再飞过去;
    camera.flyTo 飞到坐标点上或者某个区域上,

本文转自 https://www.jianshu.com/p/dd5e83b333a0,如有侵权,请联系删除。

免责声明:文章转载自《Cesium快速上手10-Viewer Entities组合》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iTerm2 配色方案(转)grep多条件查找"与","或"下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

TFS(Team Foundation Server)简介和新手入门

随着VisualStudio产品线中TeamFoundationServer组件的公布,微软使得开发团队在僵化的软件project实践应用中取得了巨大进步。TeamFoundationServer起步TeamFoundationServer是这样一种server产品,它须要部署到软件开发环境中。利用Excel和project能够訪问存储在TeamFounda...

【转】Kettle集群

本文转自:http://blog.csdn.net/dqswuyundong/article/details/5952009KettleCluster Kettle是一个开源ETL工具,以其效率和可扩展性而闻名于业界。其高效的一个重要原因是其多线程和集群功能。Kettle的多线程采用了管道并发机制,这在另一篇文章中专门介绍。本文主要介绍水壶集群。群集允许转换...

ubuntu的ufw如何开放特定端口?

ubuntu的ufw是如何打开特定端口的?1.安装sudoapt getinstallufw2.启用sudoufwenable以默认情况下禁用外部访问sudoufwdefaultdeny 3.查看状态sudoufwstatus4.添加端口sudoufwallow80805。删除端口sudoufwdeleteallow808080806。允许特定源的IP地址从...

Revit导入lumion渲染

利用Revit导出DAE文件格式插件,可以将Revit模型导入到lumion中进行图片渲染和漫游动画的制作。lumion强大的漫游功能,丰富的附加组件,绚丽的视频特效。lumion没有建模功能,但是Revit建模的没有统一的标准,导致一些不该同样的材质的地方,无法更改;如果有统一的标准,那么Revit结合lumion能做出任何想要的效果。Revit13版本能...

IntelliJ idea设置显示错误代码提示

idea默认关闭自动编译,所以一些编译错误只有在编译的时候才会提示,例如修改了引用类。按图中设置打开自动编译:注意:idea默认打开省电模式,自动编译在省电模式下被禁用,所以需要在file˃powersavemode关闭省电模式。...

WinSCP命令行操作

WinSCP命令行操作WinSCP是一个在Windows环境下使用SSH的开源图形SFTP客户端。它还支持SCP协议。它的主要功能是在本地和远程计算机之间安全地复制文件。在cmd下直接输入winscp,进入winscp操作界面。查看帮助。直接在下面输入帮助以查看所有可用命令。当第一个参数为“both”时,一个参数与另一个参数同步。未指定目录时,同步当前工作目...