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文档和相关示例。

results matching ""

    No results matching ""