2.8 拾取及事件响应

这一节我们学习如何利用拾取功能,来获取已加载数据的相关信息。

拾取功能支持人工模型数据(ModelData)、矢量数据(FeatureModelData)、倾斜摄影数据(OsgbData)、标注(LabelObj)等对象。

根据拾取对象的不同,拾取模块分为如下几个对象类:人工模型数据拾取工具(ModelPickTool)、矢量数据及标注对象拾取工具(FeatureModelPickTool)、倾斜摄影数据拾取工具(ObliqueModelPickTool)。

鼠标的拾取点击会触发数据高亮效果:

高亮效果

高亮的同时,也会触发相应的反馈事件,通常,我们通过callback属性进行回调事件的绑定。这里拿人工模型数据的拾取举个例子:

//创建人工模型数据拾取工具
var modelPickTool = new CooSDK.ModelPickTool({
     callback: getResult
});

function getResult(x, y){
    //这里会在数据被拾取到时触发,可在此处进行相关逻辑的处理事宜
    //......
}

拾取工具拾取到数据某一对象后,通常需要通过其方法getResult来进行相关信息的查询。这里根据浏览器的不同,有着不同的写法,具体的缘由请查看2.22 支持的浏览器及代码差异化

IE浏览器下:

var result = modelPickTool.getResult(CooSDK.EnumToolModel.NAME);
console.log(result);

非IE浏览器下:

modelPickTool.getResult(CooSDK.EnumToolModel.NAME, function(result){
     console.log(result);
});

矢量的拾取

FeatureModelPickTool能拾取矢量数据,矢量数据可能本身具有很多属性字段,现有的查询方法参数内没有指定的枚举类型,所以通过如下方法进行属性值,此处只展示IE下写法:

var schema = pickTool.getResult(CooSDK.EnumToolFeatureModel.SCHEMA);

上段代码取出要素所有的属性字段,格式为:"xxx;yyy;zzz;",获取到所有属性字段后,根据需要从中选取字段,再次调用getResult(选取的字段)来获取真实的属性值。比如选择"yyy":

var y = pickTool.getResult("yyy");

现在你已经学会如何创建拾取工具来拾取相关数据信息,其余功能请查看详细的API文档和相关示例。

results matching ""

    No results matching ""