伟景行 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 的使用 - 从入门到精通 开篇及索引
因为内容比较多,所以每篇讲解一些内容,最后会放出全部代码,可以参考.操作中总会遇到各式各样的问题,个人对部分问题的研究在最后一篇 问题研究 里.欢迎大家探讨学习. 代码都经过个人测试,但仍可能有各种未 ...
随机推荐
- HDU3338 Kakuro Extension —— 最大流、方格填数类似数独
题目链接:https://vjudge.net/problem/HDU-3338 Kakuro Extension Time Limit: 2000/1000 MS (Java/Others) ...
- ORACLE 创建表空间及用户
/*创建存放原始数据的表空间*/ create tablespace Djzh_original datafile 'E:\APP\ADMINISTRATOR\ORADATA\ORCL\Djzh_or ...
- dba操作之archivelog清理
下面的命令用于校验归档日志的有效性,列出无效的归档日志,以及以何种方式清除归档日志,列出几种常用的: crosscheck archivelog all; ...
- java nio的一个严重BUG
java nio的一个严重BUG Posted on 2009-09-28 19:27 dennis 阅读(4588) 评论(5) 编辑 收藏 所属分类: java .源码解读 这个BU ...
- python-dev 安装错误
/******************************************************************** * python-dev 安装错误 * 说明: * 今天在安 ...
- iOS bounds、frame之间的关系
这几个都是在ios程序中,经常会注意到的一些小细节,能否真正了解这些,对写ios程序也有很大的好处. frame 是UIView中表示此view的一个矩形面积,包括了view在它的superview中 ...
- Darwin Streaming Server 核心代码分析
基本概念 首先,我针对的代码是Darwin Streaming Server 6.0.3未经任何改动的版本. Darwin Streaming Server从设计模式上看,采用了Reactor的并发服 ...
- ASP.NET Core MVC 2.x 全面教程_ASP.NET Core MVC 24. Logging
常用的诊断中间件: UseDeveloperExceptionPage UseStatusCodePages:返回 400~600 的状态码 UseExceptionHandler 自定义异常的处理器 ...
- E20180421-hm
ambiguous adj. 模棱两可; 含糊的,不明确的; 引起歧义的; 有两种或多种意思的; simple adj. 简单的; 单纯的; 易受骗的; 天真的; simplify vt. 简化 ...
- 洛谷 - P1002 - 过河卒 - 简单dp
https://www.luogu.org/problemnew/show/P1002 方程很好想,题目也很暴力.感谢题目提示数据会很大. #include<bits/stdc++.h> ...