supermap 实现单体化模型点选及自定义信息框弹出
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了supermap 实现单体化模型点选及自定义信息框弹出相关的知识,希望对你有一定的参考价值。
参考技术A 相关视频资料
单体化技术: http://support.supermap.com.cn/product/VedioPlay.aspx?id=210
倾斜摄影数据查询: http://support.supermap.com.cn/product/VedioPlay.aspx?id=307
supermap 属性查询在线范例: http://support.supermap.com.cn:8090/webgl/examples/editor.html#S3MTiles
通过 supermap 的属性查询可以获取到数据集上的模型属性信息如 SMID、经纬度等,而对于一些模型相关的业务信息,有2种方式获取:
(1)将模型信息存储在服务器中,拿到 SMID 后去服务器中获取相对应的数据,这种方式有其便利性,当模型的业务信息有变动时,无需更改模型数据集直接修改服务器的数据即可,但存在的问题是当模型有变动时 SMID 也可能会有变动(当删除了某个模型后会造成其它模型 SMID 的改变),导致服务器存储的 SMID 与模型实际的 SMID 不匹配。
(2)将模型信息存储在数据集中,这种做法请求一次网络即可获得所有数据,缺点是当模型有更新时,需要重新录入模型的数据。
如果模型数据信息量不大,而且基本不发生改变的话,可以选择第二种方式;如果模型相关的数据存在变动的可能性较大,基础模型也可能会更新或修改的话,建议选择第一种方式,但是不推荐以 SMID 为查询值,需要建模人员在建立模型时按照约定好的格式进行建模和场景的导出(以 CAD 建模为例,可统一约定模型的 modelName 属性值,使得每次重新建模后,modelName 属性始终与模型一一对应而不发生改变,服务器也以 modelName 来存储模型信息实现数据同步)
以下介绍如何处理数据集数据,如果选择第一种查询方式且无需对数据集进行修改的可跳过这一步骤。
1、修改属性表
选中数据集后右键→点击【属性】
2、关联浏览属性数据
首先新建一个球面场景,将数据集拖入新建的球面场景中。
然后在【图层管理器】中选中当前图层→右键→点击【关联浏览属性数据】
将弹出一个与场景同步关联的数据集窗口如下
在场景中选中要修改的模型,数据集将同步选中模型对应的数据,双击单元格即可编辑信息
属性查询依赖 S3MTilesLayer 和 Viewer 两个对象类,先通过 S3MTilesLayer 的 setQueryParameter 方法设置属性查询参数,再使用 Viewer 的 pickEvent 方法获取选中模型的属性信息。
1、自定义信息弹出框
自定义弹出框的布局,样式此处省略
2、设置属性查询参数及处理模型选中事件
SuperMap(JavaScript) 拉框放大和缩小功能实现
版权声明:本文为博主原创文章,未经博主允许不得转载。
1 var ZoomControl; 2 3 /* 4 * 拉框缩小 5 */ 6 function ZoomOut(){ 7 if(ZoomControl==null||ZoomControl==‘undefined‘){ 8 ZoomControl = new SuperMap.Control.ZoomBox({out:true}); 9 map.addControl(ZoomControl); 10 } 11 else{ 12 ZoomControl.out=true; 13 } 14 ZoomControl.activate(); 15 } 16 /* 17 * 拉框放大 18 */ 19 function ZoomIn(){ 20 if(ZoomControl==null||ZoomControl==‘undefined‘){ 21 ZoomControl = new SuperMap.Control.ZoomBox({out:false}); 22 map.addControl(ZoomControl); 23 } 24 else{ 25 ZoomControl.out=false; 26 } 27 ZoomControl.activate(); 28 }
笔者在项目中的应用,供大家参考。
以上是关于supermap 实现单体化模型点选及自定义信息框弹出的主要内容,如果未能解决你的问题,请参考以下文章
手写SpringBoot自动配置及自定义注解搭配Aop,实现升级版@Value()功能
SuperMap(JavaScript) 拉框放大和缩小功能实现