伟景行 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 的使用 - 从入门到精通 开篇及索引
因为内容比较多,所以每篇讲解一些内容,最后会放出全部代码,可以参考.操作中总会遇到各式各样的问题,个人对部分问题的研究在最后一篇 问题研究 里.欢迎大家探讨学习. 代码都经过个人测试,但仍可能有各种未 ...
随机推荐
- UVA11624 Fire! —— BFS
题目链接:https://vjudge.net/problem/UVA-11624 题解: 坑点:“portions of the maze havecaught on fire”, 表明了起火点不唯 ...
- Tomcat的一些问题
首先设置好TOMCAT环境变量(如何设置?) 1.用Servlet发现每次改动Servlet都要重启Tomcat才能生效!!!搞死爹了!! 可以选择shutdown命令或者直接叉掉汤姆猫窗口!!!然后 ...
- SPOJ:Help BTW(二分)
BTW wants to buy a gift for her BF and plans to buy an integer array. Generally Integer arrays are c ...
- react之入门
react出于FackBook,是一个将js与css共写的里程碑,主要用于构建UI,很多人认为 React 是 MVC 中的 V(视图),后来出现redux更多的是处理数据,所以也适合做逻辑复杂的管理 ...
- 哈希表的C实现(三)---传说中的暴雪版
关于哈希表C实现,写了两篇学习笔记,不过似乎网上流传最具传奇色彩的莫过于暴雪公司的魔兽文件打包管理器里的hashTable的实现了:在冲突方面的处理方面,采用线性探测再散列.在添加和查找过程中进行了三 ...
- JavaScript-Tool:wdtree
ylbtech-JavaScript-Tool:wdtree 1.返回顶部 1. 插件描述:wdTree是一个轻量级jQuery插件用于创建一个带有嵌套Check Boxe的树形控件. wdTree是 ...
- C#面向对象之数据库(理论、插入、修改、删除、查询)
1.数据库的作用:不仅仅是存储,更重要的是将数据进行存储以后怎么样才能方便快捷的查询修改 2.数据库的特点:海量存储.查找速度快.并发性问题控制.安全性.数据完整性(保存在数据库中的数据是正确的.真是 ...
- 安装Nginx作为文件服务器
我是在Windows上安装的,在Linux上也一样 #Windows server2008 R2 #Nginx1.12 Nginx安装包下载地址:http://nginx.org/en/downloa ...
- angular源码剖析之Provider系列--CacheFactoryProvider
CacheFactoryProvider 简介 源码里是这么描述的: Factory that constructs {@link $cacheFactory.Cache Cache} objects ...
- HDU6038:Function(循环群/节+找公式)
传送门 题意 给出一个\(0\sim n-1\)的排列a,一个\(0\sim {m-1}\)的排列b,询问满足\[f(i)=b_{f(a_i)}~~(0\le i\le n-1)\]的函数的个数 分析 ...