伟景行 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 的使用 - 从入门到精通 开篇及索引
因为内容比较多,所以每篇讲解一些内容,最后会放出全部代码,可以参考.操作中总会遇到各式各样的问题,个人对部分问题的研究在最后一篇 问题研究 里.欢迎大家探讨学习. 代码都经过个人测试,但仍可能有各种未 ...
随机推荐
- 自定义android 音乐通知栏 ——可伸缩扩展
Android custom notification for music player Example In this tutorial, you will learn how to creat ...
- 并不对劲的bzoj1758:p4292:[WC2010]重建计划
题目大意 \(n\)(\(n\leq10^5\))个点的一棵树,有边权\(w\),给定\(l,r\),求边数在\([l,r]\)中的路径的平均边权的最大值 题解 二分答案,判断时将边权变成\(w-mi ...
- [SHOI 2012] 魔法树
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2836 [算法] 树链剖分 时间复杂度 : O(NlogN ^ 2) [代码] #in ...
- codevs 等差数列
1006 等差数列 时间限制: 1 s 空间限制: 128000 KB 题目等级 : 黄金 Gold 题解 题目描述 Description 给定n(1<=n<=100) ...
- PostgreSQ 连接问题 FATAL: no pg_hba.conf entry for host
PostgreSQ数据库为了安全,它不会监听除本地以外的所有连接请求,当用户通过JDBC访问是,会报一些如下的异常: org.postgresql.util.PSQLException: FATAL: ...
- NC文件的处理【netcdf】
NC是气象领域数据的标准格式之一. 能够更好的存储格点数据. 下面为测试NC文件的读写. git:https://git.oschina.net/ipnunu/nctest pom.xml <p ...
- BZOJ3834:Solar Panels (分块)
题意 询问两个区间[smin,smax],[wmin,smax]中是否存在k的倍数,使得k最大 分析 将其转化成\([\frac{smin-1}k,\frac{smax}k],[\frac{wmin- ...
- bzoj 4161 Shlw loves matrixI【常系数线性齐次递推】
并不会递推,不过板子挺好背的,只要是类似的递推都能用,但是注意c数组不能使负数 如果除了递推还有常数项的话,就用f[i]-f[i-1]的方式消掉常数项(然后多一个f[i-1]的项) #include& ...
- bzoj 2331: [SCOI2011]地板【插头dp】
一开始设计了四种状态,多了一种已经拐弯但是长度为0的情况,后来发现不用,设012表示没插头,没拐弯的插头,拐了弯的插头,然后转移的话12,21,22都不合法,剩下的转移脑补一下即可,ans只能在11, ...
- bzoj 1478: Sgu282 Isomorphism && 1815: [Shoi2006]color 有色图【dfs+polya定理】
参考 https://wenku.baidu.com/view/fee9e9b9bceb19e8b8f6ba7a.html?from=search### 的最后一道例题 首先无向完全图是个若干点的置换 ...