jjzjj

cesium-2-entity

Coder-Wang 2024-01-16 原文

1、四层结构


viewer --> datasources(DataSourceCollection类型) --> datasource --> entities(EntityCollection类型) --> entity


需要学习的方向是:只需要注意每个层与层之间的关系和entity实例如何创建即可

2、DataSourceCollection

增:
add(dataSource) → Promise.<DataSource>
删:(destroy一般为boolean,指是否需要直接销毁该datasource)
remove(dataSource, destroy) → boolean
removeAll(destroy)
查:
indexOf(dataSource) → number
getByName(name) → Array.<DataSource>
get(index) → DataSource
contains(dataSource) → boolean
改:
该类型数据一般是指向型,直接调出属性直接修改即可
改变层级关系(特殊):
lower(dataSource)
lowerToBottom(dataSource)
raise(dataSource)
raiseToTop(dataSource)

3、datasource

这是一个抽象类,有各种实现方式

一般只会用到他的三个属性:entities、name和show

4、entities(EntityCollection类型)

增:
add(entity) → Entity
getOrCreateEntity(id) → Entity
删:
removeAll()
removeById(id) → boolean
remove(entity) → boolean
查:
contains(entity) → boolean
getById(id) → Entity|undefined
改:

重要属性:

id : string
owner : DataSource|CompositeEntityCollection
show : boolean
values : Array.<Entity>  // 全部的entity

5、创建新的entity

一些实例:
https://www.jianshu.com/p/4250e822c9c8

6、代码

需要注意的是这里的add()方法得到的是<promise.类型>,后面需要使用.then(成功函数,失败函数)来得到类型
add(dataSource) → Promise.<DataSource>
这种类怎么创建和怎么用见:
https://blog.csdn.net/ABCFF12333/article/details/118188018

  // 注意add()方法得到的是<promise.类型>,后面需要使用.then(成功函数,失败函数)来得到类型
  // 注意这是异步方法
  viewer.dataSources.add(new Cesium.CustomDataSource("pointDataSource1")).then(function(value){
    var pointDataSource = value;
    pointDataSource.show = true;
    var point1 = pointDataSource.entities.add({
      id: "point1",
      name: "point1",
      position: Cesium.Cartesian3.fromDegrees(109, 34, 0),
      point: {
        pixelsize: 10,
        color: Cesium.Color.YELLOW,
        outlineWidth: 2,
        outlineColor: Cesium.Color.RED
      }
    });
    var point2 = pointDataSource.entities.add({
      id: "point2",
      name: "point2",
      position: Cesium.Cartesian3.fromDegrees(110, 35, 0),
      point: {
        pixelsize: 10,
        color: Cesium.Color.YELLOW,
        outlineWidth: 2,
        outlineColor: Cesium.Color.RED
      }
    })
  },function(error){})

  viewer.dataSources.add(new Cesium.CustomDataSource("polygonDatasource")).then(function(value){
    var polygonDatasource = value;
    polygonDatasource.show = true;
    polygonDatasource.entities.add({
      id: "polygon1",
      name: "polygon1",
      polygon: {
        hierarchy: Cesium.Cartesian3.fromDegreesArray([
          109.080842, 45.002073,
          105.91517, 45.002073,
          104.058488, 44.996596,
          104.053011, 43.002989,
          104.053011, 41.003906,
          105.728954, 40.998429,
          107.919731, 41.003906,
          109.04798, 40.998429,
          111.047063, 40.998429,
          111.047063, 42.000709,
          111.047063, 44.476286,
          111.05254, 45.002073,
          109.080842, 45.002073
        ]),
        height: 10,  // 必须要有高度,否则没有边框
        material: Cesium.Color.GREEN,
        outline: true,
        outlineColor: Cesium.Color.RED,
        outlineWidth: 2,
        fill: true
      }
    })
  },function(error){})
})

有关cesium-2-entity的更多相关文章

  1. Cesium源码解析一(terrain文件的加载、解析与渲染全过程梳理) - 2

    快速导航(持续更新中…)Cesium源码解析一(terrain文件的加载、解析与渲染全过程梳理)Cesium源码解析二(metadataAvailability的含义)Cesium源码解析三(metadata元数据拓展中行列号的分块规则解析)Cesium源码解析四(Quantized-Mesh(.terrain)格式文件在CesiumJS和UE中加载情况的对比)目录1.前言2.本篇的由来3.terrain文件的加载3.1更新环境3.2更新和执行渲染命令3.3数据优化3.4结束当前帧4.总结1.前言  目前市场上三维比较火的实现方案主要有两种,b/s的方案主要是Cesium,c/s的方案主要是u

  2. ruby-on-rails - 葡萄 : required params with grape-entity - 2

    我正在用grape编写一个API服务器,我选择使用grape-entity因为它能够自动生成swagger的文档。但是现在我在按要求设置参数时遇到了问题。因为葡萄不验证参数是否存在。看起来grape忽略了实体参数的required:true。app.rbmoduleSmartmoduleVersion1classAppos_entity.rbmoduleSmartmoduleEntitiesclassOSEntityapp_entity.rbmoduleSmartmoduleEntitiesclassAppEntity现在其他一切都很好,但我不知道如何以DRY方式使用实体,并让grap

  3. javascript - Rails : POST 422 (Unprocessable Entity) in Rails? 由于路线或 Controller ? - 2

    我正在尝试为我网站上的用户提供“积分”或“积分”,以发布有关品牌名称的推文。我在适当的View上有漂亮的Twitter小部件...Tweetwindow.twttr=(function(d,s,id){vart,js,fjs=d.getElementsByTagName(s)[0];if(d.getElementById(id))return;js=d.createElement(s);js.id=id;js.src="https://platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);returnw

  4. javascript - 一张Cesium Map可以显示多少个点? - 2

    我试图在Cesiummap上放置数千个点,但遇到了Firefox崩溃的问题。我必须使用Firefox。该map似乎能够显示15,000个点(如图像)。但是,它也几乎无法使用。缩放和平移有巨大的延迟并最终崩溃。有谁知道极限应该是多少分?另外,有没有比我现在做的更好的方式来显示这些点?我真的希望是我而不是铯。我听说创建czml然后传入它比较慢,所以我有以下javascript测试:functiontest(){for(vari=0;i90){tempLat=0;tempLon=0;}addBillboard(scene,ellipsoid,tempLat,tempLon);}}//this

  5. javascript - Cesium DataSourceCollection层排序 - 2

    我有多个GeoJsonDataSource对象,我想将它们放在Cesium地球仪上。问题是,如果它们重叠,我会遇到一些z-fighting问题,我无法调整它们的顺序。有没有一种方法可以指定DataSourceCollection中DataSource对象的顺序?例如,我想使用以下代码将绿色多边形置于红色多边形之上:varviewer=newCesium.Viewer('cesiumContainer');varred=Cesium.GeoJsonDataSource.load('map1.geojson',{fill:newCesium.Color(1,0,0,1.0)});vargr

  6. javascript - 动态客户关系管理 2013 : Setting default values in a form from an entity - 2

    我是DynamicsCRM2013的新手。我希望能够在加载表单时在表单上设置默认值。我正在考虑创建一个实体“默认参数”来为用户保存几个默认值。例如,交货日期或默认提供商。是否可以在事件OnLoad上创建一个绑定(bind)到表单的脚本,并为当前用户读取实体“默认参数”的值,并使用这些值设置表单的字段?如果可能的话,是否有任何文档或示例代码可以做到这一点? 最佳答案 tl;博士这应该是可能的,下面提供了起点。用数据填充表单的一种方法是通过query-string/main.aspx?etn=account&extraqs=name%3

  7. Cesium 核心概念 核心接口 - 2

    Cesimum可以做什么Cesium是一个开源的3D地球可视化引擎,它可以在Web浏览器中以高性能和高质量呈现全球范围内的地球表面数据。Cesium可以用于以下领域:地理信息系统:Cesium可以呈现地球表面上的各种地理信息数据,包括卫星影像、数字高程模型、地形数据、矢量数据等。用户可以使用Cesium创建交互式的地图应用程序,从而更好地了解地球上的各种地理信息。智能城市:Cesium可以用于可视化城市规划、交通流量、气象预报、环境监测等数据。通过Cesium,用户可以更好地了解城市的运转情况,并对城市的规划、管理等方面进行决策。航空航天:Cesium可以呈现卫星轨道、星座分布、航空交通等数据

  8. javascript - 如何更改 Cesium map 中 EllipseOutlineGeometry 的宽度? - 2

    我正在遵循沙堡椭圆轮廓几何体。我想知道是否有办法让椭圆线的宽度变宽?有使用width属性使折线变宽的示例,但似乎没有办法制作ellipseOutlineGeometry对象。沙堡示例在末尾有一个lineWidth设置,但对此的更改似乎不会影响椭圆轮廓的宽度。沙箱代码://Createtheellipsegeometry.Toextrude,specifythe//heightofthegeometrywiththeextrudedHeightoption.//ThenumberOfVerticalLinesoptioncanbeusedtospecify//thenumberoflin

  9. javascript - 如何在浏览器中使用 npm 安装的 cesium - 2

    Cesium现在在npm上。在npminstallcesium之后-进入我的项目,所有代码进入node_modules.在铯中helloworld,它包括cesium通过类似的方式我的问题是,为了从html使用cesium,我需要执行哪些额外步骤? 最佳答案 有几种方法。如果正在提供node_modules文件夹本身,您可以从那里拉Cesium。在调试期间,使用未缩小的版本:@importurl(node_modules/cesium/Build/CesiumUnminified/Widgets/widgets.css);但对于生产

  10. javascript - Nest.js - 请求实体太大 PayloadTooLargeError : request entity too large - 2

    我正在尝试将JSON保存到Nest.js服务器中,但是当我尝试这样做时服务器崩溃了,这就是我在console.log上看到的问题:[Nest]1976-2018-10-1209:52:04[ExceptionsHandler]请求实体太大PayloadTooLargeError:请求实体太大一件事是JSON请求的大小是1095922字节,有人知道Nest.js中如何增加有效请求的大小吗?谢谢! 最佳答案 您还可以从express导入urlencoded和jsonimport{NestFactory}from'@nestjs/core

随机推荐