Cesium 实现选中效果
基于鼠标事件的选择,可以通过MOUSE_MOVE或LEFT_CLICK事件触发
/*鼠标移动选择开始*/var silhouetteBlue = Cesium.PostProcessStageLibrary.createEdgeDetectionStage();silhouetteBlue.uniforms.color = Cesium.Color.BLUE;silhouetteBlue.uniforms.length = 0.01;silhouetteBlue.selected = [];var silhouetteGreen = Cesium.PostProcessStageLibrary.createEdgeDetectionStage();silhouetteGreen.uniforms.color = Cesium.Color.LIME;silhouetteGreen.uniforms.length = 0.01;silhouetteGreen.selected = [];viewer.scene.postProcessStages.add(Cesium.PostProcessStageLibrary.createSilhouetteStage([silhouetteBlue, silhouetteGreen]));viewer.screenSpaceEventHandler.setInputAction(function onMouseMove(movement) {var pickedFeature = viewer.scene.pick(movement.endPosition);if(Cesium.defined(pickedFeature)) {if(pickedFeature == silhouetteGreen.selected[0]) {silhouetteBlue.selected = [];} else {silhouetteBlue.selected = [pickedFeature];}}}, Cesium.ScreenSpaceEventType.MOUSE_MOVE);viewer.screenSpaceEventHandler.setInputAction(function leftClick(movement) {var pickedFeature = viewer.scene.pick(movement.position);if(Cesium.defined(pickedFeature)) {silhouetteGreen.selected = [pickedFeature];}}, Cesium.ScreenSpaceEventType.LEFT_CLICK);/*鼠标移动选择结束*/
由于项目要求,需要实现通过下拉列表实现选中效果,先贴代码
//加载瓦片var tileset0 = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({url: 'map/dx/tileset.json',skipLevelOfDetail: true, //开启跳级加载maximumMemoryUsage: 2000, //最大内存占用dynamicScreenSpaceError: true}));//给当前瓦片添加事件监听器tileset0.tileVisible.addEventListener(function(tile) {while(flag){silhouetteGreen.selected=[tile.content.getFeature(0)];flagS=false;}});
接下来是自己踩的坑:
看官方文档PostProcessStageComposite的selected对象只能是array for features,而Cesium3DTileFeature不能直接初始化,只能通过Cesium3DTileContent#getFeature
或 Scene#pick
、Scene#pickPosition等方法获取到。
根据其他类型的方法看到
Cesium3DTileset#root方法可以得到Cesium3DTile对象,Cesium3DTile#content得到Cesium3DTileContent对象,Cesium3DTileContent#getFeature(batchId)可以获取到Cesium3DTileFeature,然而!!!
这里获取到的为null。
再去看Cesium3DTileFeature的方法,可以通过Cesium3DTileset#tileUnload
或Cesium3DTileset#tileVisible对feature对象进行修改。
over
Cesium 实现选中效果相关推荐
- android 飞框动画,AndroidTV中实现飞框选中效果
相信很多从事AndroidTV开发的朋友都对如何展示item的选中效果感到苦恼,电视端开发与移动端最大的不同是用户只能通过一个遥控器进行控制(当然如果你的电视是触屏的话除外--),在这个时候,我们需要 ...
- g2 折线图点与点之间直线_g2曲线图 每条曲线有单独的选中效果和tooltip
g2曲线图 每条曲线有单独的选中效果和tooltip ::-webkit-scrollbar { display: none; } html, body { overflow: hidden; hei ...
- 微信小程序 — tag标签设置选中效果和未选样式
实现如上图效果 .选中效果和未选中效果实现. 1.wxss文件.设置css样式.选中效果样式和默认的效果样式. stateChoose选中样式. stateNotchoose未选中(默认)样式 .s ...
- html如何设置radio单选按钮默认选中效果
从标题看这个问题够简单,事实也是如此,不过在群里还是看到有初学者来询问这个问题,下面就展示一段代码实例,如果实现多个单选按钮实现其中的一个默认选中效果. 代码实例如下: 01 02 03 04 05 ...
- 字符串根据字节长度进行截取并展示选中效果——js字符串获取字节长度
应用场景:分类部分有很多子类,点击"分类"时,有选中状态,选中效果如下: 由于内容分类名称可能会很长,就需要进行-展示, 模拟页面大致排版, 效果图如下: 可以看到上图中当分类名称 ...
- Java导出带有单选款(radio)和复选框(checkbox)选中效果的word doc文档-Freemarker实现方式
今天客户提出要求,要求把表数据导出成为word文档格式.导成word格式的这种需求很寻常,但是看到word模板里面的这种单选框和多选框(如下图),要求实现选中效果,我就有点懵B了.到处百度,googl ...
- vxe-table合并单元格后增加选中效果
<vxe-table:data="retrievalList":row-class-name="setRowClass"@cell-click=" ...
- vue搜索好友_vue实现好友选中效果
逛过vue官网肯定会发现一个有趣的指令"v-for",相比与以前拼接html代码确实要上档次一点,而且减少了工作量,先看一波效果图 首先用以前的思路分析一波,每个联系人头像,昵称肯 ...
- html 导航栏 选中状态,jQuery“导航栏点击选中效果“代码
现在的网站菜单导航栏几乎都有点击选中效果,正好今天我在开发项目中也需要用上这样的效果,下面就给大家分享一下,亲测有效,大家放心使用. 1.引入jQuery核心文件 2.加入"jQuery导航 ...
最新文章
- 【重磅】Google元老Eric Schmidt发布《深度学习2020大综述》,深度学习集大成者
- 八十八、CSS两列三列的布局方式
- 推荐13个.Net开源的网络爬虫
- java代码简单操作Redis数据Jedis jar
- js Date 函数方法
- excel vba 如何将日期周几转换成文字_这5个超实用的Excel技巧,让你的办公效率更高...
- SpringSecurity AbstractAuthenticationProcessingFilter
- 计算机技能大赛初赛主持稿,职业技能大赛开幕式主持词
- L1-029. 是不是太胖了-PAT团体程序设计天梯赛GPLT
- 工厂供电技术实训设备QY-PGD19
- asp企业建站系统 最新推出的 免费下载
- 以“空城计”为例的项目管理执行方法论干货
- Android 快递接口
- html给页面加背景特效怎么加,给网页加上js特效
- pytorch seq2seq模型中加入teacher_forcing机制
- G003-186-18
- 前端知识学习——html
- esxi6.0虚拟机克隆及跨版本克隆
- Android自动电话录音开发过程及问题
- ╮(╯▽╰)╭发现好难( ⊙ o ⊙ )啊!