伟景行 citymaker 从入门到精通(3)——点击地图获取坐标,点击模型获取模型信息和属性信息
在地图上点击要素查看要素信息,也就是identify功能
- script部分
// 通过枚举索引获取枚举名称
function getEnumTextByIdx(enumObj, idx) {
for (var item in enumObj) {
var itemValue = enumObj[item];
if (itemValue == idx) {
return item;
}
}
} // 通过fid获取要素的字段属性值
function getAttrValueByFid(featureClassInfo, fid) {
// 连接信息
var connectionInfo = __g.new_ConnectionInfo;
//从featureClassInfo获取数据源的连接字符串,然后用此连接字符串进行连接
connectionInfo.fromConnectionString(featureClassInfo.dataSourceConnectionString);
// 数据源
var dataSource = __g.dataSourceFactory.openDataSource(connectionInfo);
// 数据集
var dataSet = dataSource.openFeatureDataset(featureClassInfo.dataSetName);
// 要素类
var featureClass = dataSet.openFeatureClass(featureClassInfo.featureClassName);
// 返回的字段属性集合
var attrValues = [];
// 通过fid获取行
var rowBuffer = featureClass.getRow(fid);
// 遍历字段
var fieldinfos = featureClass.getFields();
for (var i = 0; i < fieldinfos.count; i++) {
var fieldinfo = fieldinfos.get(i);
if (null == fieldinfo)
continue;
// 字段各种属性,字段值
var fieldName = fieldinfo.name;
var value = rowBuffer.getValue(i); var fieldValue = {};
fieldValue.name = fieldName;
fieldValue.alias = fieldinfo.alias;
// 字段类型是个枚举,分别获取枚举索引和值名称
fieldValue.typeIdx = fieldinfo.fieldType;
fieldValue.type = getEnumTextByIdx(gviFieldType, fieldinfo.fieldType);
fieldValue.value = value; attrValues.push(fieldValue);
} // 释放对象
rowBuffer.releaseObject();
featureClass.releaseObject();
dataSet.releaseObject();
dataSource.releaseObject(); return attrValues;
} //鼠标选择事件
function onMouseClickSelect(pickResult, intersectPoint, mask, eventSender) {
// 点击地图的点
if (intersectPoint) {
// 点坐标
var x = intersectPoint.x;
var y = intersectPoint.y;
var z = intersectPoint.z; alert("x:" + x + " y:" + y + " z:" + z);
} // 选中的对象
if (pickResult) {
// 对象类型是FeatureLayer(矢量图层),也就是模型,因为模型都是通过矢量图层加载的
if (pickResult.type == gviObjectType.gviObjectFeatureLayer) {
// 唯一id
var fid = pickResult.featureId;
// 图层
var featureLayer = pickResult.featureLayer;
// 图层名
var featureLayerName = featureLayer.name;
// featureClass信息(不是真正的FeatureClass对象)
var featureClassInfo = featureLayer.featureClassInfo;
// featureClass名称
var featureClassname = featureClassInfo.featureClassName; // 点击要素的字段的属性(字段名,别名,类型。。。)以及字段值
// PS:获取字段属性和值需要连接数据源,不是必须的话就不要获取了
var attrValues = getAttrValueByFid(featureClassInfo, fid); var msg = ""; //遍历字段
for (var i = 0; i < attrValues.length; i++) {
var attrValue = attrValues[i]; //字段名
var fieldName = attrValue.name;
//字段别名
var alias = attrValue.alias;
// 字段类型枚举索引
var typeIdx = attrValue.typeIdx;
//字段类型枚举名称
var type = attrValue.type;
//字段值
var value = attrValue.value; msg += "字段名:" + fieldName + ";" + "字段别名:" + alias + ";" + "字段类型枚举索引:" + typeIdx + ";" + "字段类型枚举名称:" + type + ";" + "字段值:" + value + "\n";
} alert(msg);
}
}
} $(function ($) {
// 初始化三维控件
initAxControl();
//cep文件路径,本地路径也行
var cepPath = "http://192.168.15.53:32555/default.cep";
//打开cep
__g.project.open(cepPath, false, ""); // 鼠标拾取模式(此模式下可进行鼠标拾取操作)
__g.interactMode = gviInteractMode.gviInteractSelect; //mouseSelectObjectMask影响点击什么类型对象会触发onmouseclickselect事件 // 鼠标拾取的时候需要过滤的对象类型:地形
//__g.mouseSelectObjectMask = gviMouseSelectObjectMask.gviSelectTerrain;
// 鼠标拾取的时候需要过滤的对象类型:矢量图层
//__g.mouseSelectObjectMask = gviMouseSelectObjectMask.gviSelectFeatureLayer;
// 鼠标拾取的时候需要过滤的对象类型:全部
__g.mouseSelectObjectMask = gviMouseSelectObjectMask.gviSelectAll; //绑定鼠标选择事件
__g.onmouseclickselect = onMouseClickSelect;
});
其中mouseSelectObjectMask控制点击什么类型对象会触发onmouseclickselect事件,值为gviSelectTerrain就是点击地形才触发onmouseclickselect,gviSelectFeatureLayer是点击矢量图层加载的要素才触发,gviSelectAll就是所有类型都触发
以上代码下载
链接:http://pan.baidu.com/s/1miRLHjU 密码:w2gp
全系列链接:
伟景行 citymaker 从入门到精通(3)——点击地图获取坐标,点击模型获取模型信息和属性信息的更多相关文章
- 伟景行 citymaker 从入门到精通(2)——工程图层树加载
工程树是指explorer左边这棵树 本例子实现了图层树加载,点击节点切换可视状态 树控件使用easyui的树 html部分 onCheck:treeProjectTreeOnCheck是指树节点的o ...
- 伟景行 citymaker 从入门到精通系列
伟景行 citymaker 从入门到精通(1)——js开发,最基本demo,加载cep工程文件 伟景行 citymaker 从入门到精通(2)——工程图层树加载 伟景行 citymaker 从入门 ...
- 伟景行 citymaker 从入门到精通(1)——js开发,最基本demo,加载cep工程文件
开发环境:citymaker 7(以下简称cm),jquery,easyui 1.4(界面),visual studio 2012(没有vs,不部署到IIS也行,html文件在本地目录双击打开可用) ...
- 最全的MonkeyRunner自动化测试从入门到精通(10)
三.MonkeyRunner复杂的功能开始学习 (1)获取APK文件中ID的两种方式 Monkeyrunner的环境已经搭建完成,现在对Monkeyrunner做一个简介. Monkeyrunner工 ...
- 史上最全的MonkeyRunner自动化测试从入门到精通(3)
原文地址https://blog.csdn.net/liu_jing_hui/article/details/60956088 MonkeyRunner复杂的功能开始学习 (1)获取APK文件中ID的 ...
- sql索引从入门到精通(十亿行数据测试报告)
原文:sql索引从入门到精通(十亿行数据测试报告) 导读部分 --------------------------------------------------------------------- ...
- 《跟老齐学Python:从入门到精通》齐伟(编著)epub+mobi+azw3
内容简介 <跟老齐学Python:从入门到精通>是面向编程零基础读者的Python入门教程,内容涵盖了Python的基础知识和初步应用.以比较轻快的风格,向零基础的学习者介绍一门时下比较流 ...
- ASP.NET MVC4入门到精通系列目录汇总
序言 最近公司在招.NET程序员,我发现好多来公司面试的.NET程序员居然都没有 ASP.NET MVC项目经验,其中包括一些工作4.5年了,甚至8年10年的,许多人给我的感觉是:工作了4.5年,We ...
- Web jquery表格组件 JQGrid 的使用 - 从入门到精通 开篇及索引
因为内容比较多,所以每篇讲解一些内容,最后会放出全部代码,可以参考.操作中总会遇到各式各样的问题,个人对部分问题的研究在最后一篇 问题研究 里.欢迎大家探讨学习. 代码都经过个人测试,但仍可能有各种未 ...
随机推荐
- CentOS7.2安装Vim8和YouCompleteMe
1.环境 本文使用VMWare虚拟机进行实验,客户机系统是CentOS 7.2最小安装(CentOS-7-x86_64-Minimal-1511.iso) 最终实现效果:安装vim8 + python ...
- bzoj3957: [WF2011]To Add or to Multiply
gay队牛逼! 我们可以强行拆一下柿子,最终得到的值会是m^k*x+m^k*u(k)*a+m^k-1*u(k-1)*a……m^0*u(0)*a 其中u表示后面有i个m的a有多少个 答案就是k+∑u 枚 ...
- Maze 解题报告
Maze Description You are given a special Maze described as an n*m matrix, please find the shortest ...
- Android零碎知识点,之后会一直更新的哦!
view的getCompoundDrawables()方法,调用这个方法返回的是控件的左上右下四个位置的Drawable,并且返回的类型是数据 setBounds(x,y,width,height); ...
- Python中的sort() key含义
sorted(iterable[, cmp[, key[, reverse]]]) iterable.sort(cmp[, key[, reverse]]) 参数解释: (1)iterable指定要排 ...
- 网站页面打开浏览器table中显示图片
就类似博客园这种:
- UVA-10600(次小生成树)
题意: 现在给一个图,问最小生成树和次小生成树的权值和是多少; 思路: 求最小生成树的两种方法,次小生成树是交换最小生成树的其中一条边得到的,现在得到了最小生成树,枚举不在次小生成树中的边,再求一边最 ...
- 微信小程序服务类目大坑:特殊行业服务类目所需资质材料
作为一个技术开发人员,遇到特殊行业服务类目所需资质材料,只能叫苦连天了,妈的,这个不是技术可以解决的问题,如果技术可以解决的问题都不是问题. 百牛信息技术bainiu.ltd整理发布于博客园 特殊行业 ...
- node安装升级npm
安装npm npm上有很多优秀的nodejs包,来解决常见的一些问题,比如用node-mysql,就可以方便通过nodejs链接到mysql,进行数据库的操作 在开发过程往往会需要用到其他的包,使用n ...
- Linux入侵检测工具
原文:https://www.cnblogs.com/lvcisco/p/4045203.html 一.rootkit简介 rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统 ...