草庐IT

案例(一) Z-Indexing Geometry

BlackCaat 2023-04-10 原文

 

使用官方github包,部分解释来源于Viewer - Cesium Documentation
 
 
 Cesium.Ion.defaultAccessToken =
        "token";
      constviewer = newCesium.Viewer("cesiumContainer");

      viewer.entities.add({
        //entities获取实体集合
        id: "red rectangle,zIndex 1",
        rectangle: {
          //设置或者获取矩形
          coordinates: Cesium.Rectangle.fromDegrees(-110.0, 20, -100.5, 30.0), //左下角经纬右上角经纬
          material: Cesium.Color.RED,
          zIndex: 1, //一个属性,指定用于排序地面几何的 zIndex。仅当矩形为常量且未指定
//height 或 extrudedHeight 时才有效。
        },
      });

      viewer.entities.add({
        id: "Textured rectangle, zIndex 2",
        rectangle: {
          coordinates: Cesium.Rectangle.fromDegrees(-112.0, 25.0, -102.5, 35.0),
          material: "../images/Cesium_Logo_Color.jpg",
          zIndex: 2,
        },
      });

      viewer.entities.add({
        id: "Blue rectangle, zIndex 3",
        rectangle: {
          coordinates: Cesium.Rectangle.fromDegrees(-110.0, 31.0, -100.5, 41.0),
          material: Cesium.Color.BLUE,
          zIndex: 3,
        },
      });

      viewer.entities.add({
        id: "Textured rectangle, zIndex 3",
        rectangle: {
          coordinates: Cesium.Rectangle.fromDegrees(-99.5, 20.0, -90.0, 30.0),
          material: "../images/Cesium_Logo_Color.jpg",
          zIndex: 3,
        },
      });

      viewer.entities.add({
        id: "Green rectangle, zIndex 2",
        rectangle: {
          coordinates: Cesium.Rectangle.fromDegrees(-97.5, 25.0, -88.0, 35.0),
          material: Cesium.Color.GREEN,
          zIndex: 2,
        },
      });

      viewer.entities.add({
        id: "Blue rectangle, zIndex 1",
        rectangle: {
          coordinates: Cesium.Rectangle.fromDegrees(-99.5, 31.0, -90.0, 41.0),
          material: Cesium.Color.BLUE,
          zIndex: 1,
        },
      });
      if (!Cesium.Entity.supportsPolylinesOnTerrain(viewer.scene)) {
        //检查给定场景是否支持夹在地形或 3D 平铺上的折线。
        //如果不支持此功能,具有折线图形的实体将在提供的高度处使用顶点进行渲染,
        //并使用 `arcType` 参数而不是固定在地面上。
        window.alert(
          "Polylines on terrain are not supported on this platform ,Z-index will be ignored"
        );
      }
      if (!Cesium.Entity.supportsMaterialsforEntitiesOnTerrain(viewer.scene)) {
        //检查给定场景是否支持覆盖在地形或 3D 平铺上的实体上的颜色以外的材质。
        //如果不支持此功能,则具有非颜色材质但没有'高度'的实体将被渲染为高度为 0。
        window.alert(
          "Textured materials on terrain polygons are not
supported on this platform, Z-index will be ignored"
        );
      }
      viewer.entities.add({
        id: "Polyline, zIndex 2",
        polyline: {
          positions: Cesium.Cartesian3.fromDegreesArray([
            -120.0, 22.0, -80.0, 22.0,
          ]), //指定定义线带的 Cartesian3 位置数组
          width: 8.0,
          material: newCesium.PolylineGlowMaterialProperty({
            //映射到折线发光 Material
            glowPower: 0.2, //发光强度,占总线宽的百分比
            color: Cesium.Color.BLUE,
            //taperPower:一个数字属性,指定锥形效果的强度,
            //以总线条长度的百分比表示。如果为 1.0 或更高,则不使用锥形效果。
          }),
          zIndex: 2,//深度信息
          clampToGround: true,
          //指定折线是否应固定在地面上。
        },
      });
      viewer.zoomTo(viewer.entities);
      //zoomTo (target, offset(可选) )
      //异步设置相机以查看提供的实体、实体或数据源。
      //如果数据源仍在加载过程中或可视化仍在加载中,则此方法在执行缩放之前等待数据准备好。
      //偏移量是本地东西北上参考系中的航向/俯仰/范围,以边界球的中心为中心。
      //航向角和俯仰角在当地东西北上参考系中定义。航向是从 y 轴到 x 轴增加的角度。俯仰是从 xy 平面的旋转。
//正俯仰角在平面上方。
      //负俯仰角位于平面下方。范围是到中心的距离。如果范围为零,则将计算范围以使整个边界球体可见。
      //在 2D 中,必须有自上而下的视图。摄像机将放置在目标上方向下看。目标上方的高度将是范围。
/ /航向将根据偏移量确定。如果无法根据偏移量确定航向,则航向将为北。
 
 
运行结果图:(与代码略有不同,更换了图片路径和内容 (material:))
 

有关案例(一) Z-Indexing Geometry的更多相关文章

  1. 「Python|Selenium|场景案例」如何定位iframe中的元素? - 2

    本文主要介绍在使用Selenium进行自动化测试或者任务时,对于使用了iframe的页面,如何定位iframe中的元素文章目录场景描述解决方案具体代码场景描述当我们在使用Selenium进行自动化测试的时候,可能会遇到一些界面或者窗体是使用HTML的iframe标签进行承载的。对于iframe中的标签,如果直接查找是无法找到的,会抛出没有找到元素的异常。比如近在咫尺的例子就是,CSDN的登录窗体就是使用的iframe,大家可以尝试通过F12开发者模式查看到的tag_name,class_name,id或者xpath来定位中的页面元素,会抛出NoSuchElementException异常。解决

  2. ruby &&= 边缘案例 - 2

    有点边缘情况,但知道为什么&&=会这样吗?我正在使用1.9.2。obj=Object.newobj.instance_eval{@bar&&=@bar}#=>nil,expectedobj.instance_variables#=>[],soobjhasno@barinstancevariableobj.instance_eval{@bar=@bar&&@bar}#ostensiblythesameas@bar&&=@barobj.instance_variables#=>[:@bar]#whywouldthisversioninitialize@bar?为了比较,||=将实例变量初始

  3. ruby - 使用散列或案例陈述 [Ruby] - 2

    一般来说哪个更好用?:casenwhen'foo'result='bar'when'peanutbutter'result='jelly'when'stack'result='overflow'returnresult或map={'foo'=>'bar','peanutbutter'=>'jelly','stack'=>'overflow'}returnmap[n]更具体地说,什么时候应该使用案例陈述,什么时候应该只使用散列? 最佳答案 散列是一种数据结构,而case语句是一种控制结构。当你只是检索一些数据时,你应该使用散列(就像你

  4. Ruby:案例使用对象 - 2

    有没有办法在case语句的对象上隐式调用方法?即:classFoodefbar1enddefbaz...endend我希望能够做的是这样的事情......foo=Foo.newcasefoowhen.bar==1then"something"when.bar==2then"somethingelse"when.baz==3then"anotherthing"end...其中“when”语句正在评估case对象上方法的返回。这样的结构可能吗?如果是的话,我还没有弄清楚语法...... 最佳答案 FWIW,您根本不需要将对象传递给1.8

  5. BigData/Cloud Computing:基于阿里云技术产品的人工智能与大数据/云计算/分布式引擎的综合应用案例目录来理解技术交互流程 - 2

    BigData/CloudComputing:基于阿里云技术产品的人工智能与大数据/云计算/分布式引擎的综合应用案例目录来理解技术交互流程目录一、云计算网站建设:部署与发布网站建设:简单动态网站搭建云服务器管理维护云数据库管理与数据迁移云存储:对象存储管理与安全超大流量网站的负载均衡二、大数据MOOC网站日志分析搭建企业级数据分析平台基于LBS的热点店铺搜索基于机器学习PAI实现精细化营销基于机器学习的客户流失预警分析使用DataV制作实时销售数据可视化大屏使用MaxCompute进行数据质量核查使用Quick BI制作图形化报表使用时间序列分解模型预测商品销量三、云安全云平台使用安全云上服务

  6. ruby-on-rails - 关于这个 Rails 关联案例中的 "<<"运算符 - 2

    我是RubyonRails的新手。在Rails应用程序中,我看到了如下代码:在模型中,有一个类Car:classCar在controller中,有一个方法“some_method”classCarsController我有三个问题要问:1.在Controller的代码中@my_car.components,它有什么作用?什么是什么意思?2.“3.是否Car类必须显式定义has_many关联Componentclassif""isused或者是""可用于向Car添加新关联,即使关联未在Car中定义显式类? 最佳答案 编辑后:第1点@m

  7. Spring Security详细讲解(JWT+SpringSecurity登入案例) - 2

    本篇博文目录:一.SpringSecurity简介1.SpringSecurity2.SpringSecurity相关概念二.认证和授权1.认证(1)使用SpringSecurity进行简单的认证(SpringBoot项目中)(2)SpringSecurity的原理(3)SpringSecurity核心类(4)认证登入案例(JWT+SpringSecurity实现登入案例)2.授权(1)加入权限到Authentication中(2)SecurityConfig配置文件中开启注解权限配置(3)给接口中的方法添加访问权限(4)用户权限表的建立3.自定义失败处理(1)创建异常处理类(2)配置移除处理

  8. ruby-on-rails - Ruby on Rails 案例/开关。如何匹配对象? - 2

    我正在开发ruby​​onrails应用程序。对于sessionController,我想用一个案例来检查用户的帐户是否被锁定或禁止。我正在尝试使用类的对象作为案例,并使用when来检查属性。例如,user=Profile.find(1)caseuserwhenuser.banredirect_to()whenuser.lockredirect_to()elseredirect_to()end唯一的问题是它不起作用。这是什么工作:caseuser.banwhentrueredirect_to()elseredirect_to()end关于如何使用开关检查用户对象是否被禁止或锁定,有什么

  9. ruby - Sinatra 成功案例 - 2

    关闭。这个问题是off-topic.它目前不接受答案。想改进这个问题吗?Updatethequestion所以它是on-topic用于堆栈溢出。关闭11年前。Improvethisquestion您成功使用过Sinatra吗?这是一个什么样的项目?在什么情况下您会推荐使用Sinatra而不是Rails或Merb?

  10. javascript - 如何在sequelize中选择案例查询? - 2

    我有一个sql查询:SELECTfield1,field2,CASEWHENfield1=1THEN'a'ELSE'b'ENDASfield3FROMtest我想用sequelizejs实现它,constparams={attributes://DOSELECTCASE,};yieldModel.findAll(params);谁能帮帮我?谢谢。 最佳答案 对于仍在寻找这个答案的人Model.findAll({attributes:[[models.sequelize.literal('CASEWHEN"field1"=trueTH

随机推荐