2.8 拾取及事件响应
这一节我们学习如何利用拾取功能(AllTypePickTool)来获取已加载数据的相关信息。
拾取功能支持人工模型数据(ModelData)、矢量数据(FeatureModelData)、倾斜摄影数据(OsgbData)、标注(LabelObj)等对象。
鼠标的拾取点击会触发数据高亮效果:
高亮的同时,也会触发相应的反馈事件,通常,我们通过callback属性进行回调事件的绑定。这里拿人工模型数据的拾取举个例子:
//创建人工模型数据拾取工具
var pickTool = new CooSDK.AllTypePickTool({
pickType: CooSDK.EnumPickDataType.ALL,
callback: getResult
});
function getResult(x, y){
//这里会在数据被拾取到时触发,可在此处进行相关逻辑的处理事宜
//x 为拾取到对象的类型,model对应人工模型(ModelData)
//y 为拾取结果的对象
var result = y[x];
//......
}
拾取工具拾取到数据某一对象后,通常需要通过其方法getResult来进行相关信息的查询。这里根据浏览器的不同,有着不同的写法,具体的缘由请查看2.22 支持的浏览器及代码差异化:
IE浏览器下:
var result = pickTool.getResult(CooSDK.EnumToolModel.NAME);
console.log(result);
非IE浏览器下:
pickTool.getResult(CooSDK.EnumToolModel.NAME, function(result){
console.log(result);
});
解析返回数据对象
拾取工具拾取到对象后会通过我们绑定的回调函数返回json格式的数据,我们需要解析json格式数据获取拾取对象的属性信息。
function getResult(type, jsonObj){
//type 为拾取到对象的类型,作为json对象的key
//jsonObj 为拾取结果的对象
//result 为json数组
var result = jsonObj[type];
//......
}
回调函数第一个参数type代表拾取到的数据类型,具体类型如下所示:
名称 | 数据类型 |
---|---|
model | 人工模型(ModelData) |
oblique | 倾斜摄影(OsgbData) |
label | 普通标注(LabelObj) |
labelEx | 聚合标注(LabelExObj) |
vector | 矢量数据(FeatureModelData) |
analysisLayer | 空间分析(Analysis) |
dynamicPath | 动态路径(DynamicPathProvider) |
以拾取人工模型数据为例,返回的jsonObj对象格式如下:
{
"model" : [
{
"attr1" : "value1",
"attr2" : "value2"
}
]
}
现在你已经学会如何创建拾取工具来拾取相关数据信息,其余功能请查看详细的API文档和相关示例。