2.9 空间分析绘制类(Analysis)

空间分析绘制类主要为三维地图提供基于空间位置的各类分析、绘制功能。

目前分析类有如下功能分类:

创建方式

空间分析绘制有种创建方式:

第一种是在代码中直接赋予位置坐标信息,使其创建时就在场景中生成,这里拿视域分析(ViewshedAnalysis)进行举例,代码如下:

// 创建视域分析并添加至三维场景中
var viewshedAnalysis = new CooSDK.ViewshedAnalysis({
    isTextVisible: true,
    analysisTextSymbol: {
        size: 140,
        fillingColor: new CooSDK.ColorObj(0, 0, 1, 1),
        isHorizontal: true
    },
    // 预设点位
    loadEyePoint: new CooSDK.PositionObj(120.218221747, 30.2105396593, 82.76055),
    loadAimPoint: new CooSDK.PositionObj(120.218013904, 30.2110769596, 20.09121)
});

第二种是在进行Analysis类对象创建后,通过鼠标与三维场景的点击交互来生成分析绘制效果,如图所示:

空间分析

所有的分析均支持这两种模式。

分析完成事件的绑定

在创建分析对象时,callback属性可预先绑定分析完成后的事件函数,该函数会在操作过程完毕后,由SDK自动触发,来告知使用者分析过程已经完成,我们可以在绑定的事件函数里,做自己想做的逻辑处理:

// 创建视域分析并添加至三维场景中,并绑定了匿名回调函数
var viewshedAnalysis = new CooSDK.ViewshedAnalysis({
    callback: function(){
        // do something...
    }
});

属性更新

在分析对象创建之后,如需对其显示效果、事件绑定等属性进行修改,可使用其提供的update接口对其进行属性更新:

viewshedAnalysis.update({
    // 取消回调事件绑定
    callback: "none",
    // 修改分析线颜色
    drawLineColor: new CooSDK.ColorObj(1.0, 0, 0, 1.0),
    // 修改垂直张角
    vAngle: 100
});

这里需要注意的是,在取消回调事件的绑定时,请传入字符串"none",而不是null

分析结果的获取

分析完成后,通常会生成相关的分析结果,这时就可以通过getResult接口,来获取分析结果相应的信息,这里注意下IE浏览器和非IE浏览器的写法:

IE浏览器:

// 获取视域起始点信息
var result = viewshedAnalysis.getResult(CooSDK.EnumAnalysis.VIEWSHED_EYEPOS);
console.log(result);
// 获取视域目标点信息
var result1 = viewshedAnalysis.getResult(CooSDK.EnumAnalysis.VIEWSHED_AIMPOS);
console.log(result1);

非IE浏览器:

// 获取视域起始点信息
viewshedAnalysis.getResult(CooSDK.EnumAnalysis.VIEWSHED_EYEPOS, function(result){
    console.log(result);
});
// 获取视域目标点信息
viewshedAnalysis.getResult(CooSDK.EnumAnalysis.VIEWSHED_AIMPOS, function(result1){
    console.log(result1);
});

可以发现非IE浏览器下,其采用了类似Ajax的异步方式,通过回调函数来获取返回值,具体可参考2.22 支持的浏览器及代码差异化,来理解不同浏览器下不同的使用机制。

对象隐藏或删除

待不使用分析对象时,可选择隐藏或者删除改对象。

比如隐藏:

// 直接属性赋值
viewshedAnalysis.isVisible = false;
// or
// 通过update方法赋值
viewshedAnalysis.update({
    isVisible : false
});

也可直接销毁,destroy返回值为null:

viewshedAnalysis = viewshedAnalysis.destroy();

本节介绍了Analysis类的对象的常用操作,它们具有统一的操作模式和接口,区别仅在于其丰富多样的配置属性上,这时就需要我们借助API帮助手册和应用示例来帮助理解和使用。

results matching ""

    No results matching ""