2.4.3 视频投影


视频投影

视频投影是指在场景内绘制播放区域进行视频画面展示的功能。视频投影功能支持多路摄像头同时投影到三维场景中。 视频投影支持绝大多数本地视频播放,也支持直接从摄像头接入历史视频码流和实时视频码流。

视频投影主要包括添加(创建)、更新、显隐、删除和获取结果5种操作。

在进行视频投影操作时,一般需要注意几点:

  1. 由于一个图层中可以进行多个视频画面播放,并且每个视频画面的视频源是不同的,因此在进行视频画面绘制或者加载视频画面之前,需要先创建空的绘制图层。
  2. 可创建空的绘制图层,也可创建预设的绘制图层,如需创建预设绘制图层,则IsLoad, AreaPoints, TransFormNodePos , VideoResources 等参数需要同时配置。
  3. 在需要保存视频画面参数信息时,需要通过更新先设定IsSaveParamSaveID 两个参数。然后再调用图层的获取结果接口获取。中间可能需要一定的延时,否则获取的信息可能不全甚至为空。

下图是视频投影效果:

  

参数说明

视频投影可配置的参数如下表所示:

配置项 配置说明 值类型 备注
LayerOptionsName 图层配置对象名称 string 分析图层需配置为:AnalysisLayerOptions
DataSourceTypeName 数据源类型 string as_videoarea代表视频投影
LineColor 线颜色 R,G,B,A 颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
LineWidth 线宽度 float 线宽度取值范围在1-10之间
LineIsVisible 线框是否可见 bool 默认为false
WaitImagePath 等待图片地址 string 等待加载图片地址,如不设则用默认画面
VideoResources 视频路径 string 指定加载视频源的路径地址
ID 区域ID int 一个图层中可包含多个视频画面, 每个画面都需要设定一个唯一id。 默认为0
IsAllOperator 是否批量操作 bool 设定批量操作可以更新/删除所有的视频画面, 如果设为true, 则ID设置无效。 默认为false,代表带个操作
IsCreateSingleArea 是否创建新区域 bool 新建投影画面时需设为true。默认为false
IsDelete 是否删除 bool 可根据设定的ID将视频画面删除。默认为false
ImageIsVisible 是否显示 bool 可通过该配置项控制视频画面的显隐状态。 默认为true显示
MoveType 移动方式 int 设定已有视频画面的关键点移动方式。包括0-不移动;1-区域移动;20、21、22、23-区域四个边角点移动。默认为0
MoveDistance 移动距离 x,y,z 关键点或整个画面区域的移动距离。需传入经度,纬度,高程坐标。 该参数与MoveType配合使用
SaveID 保存区域ID int 视频画面的参数信息可以传出保存,可通过该参数指定保存的视频画面。
如果传入的SaveID不存在,那么不会有信息传出。默认为0
IsSaveParam 是否保存 bool 控制是否需要保存视频画面信息。该参数需要和SaveID配合使用。 默认为false
IsLoad 是否初始化加载点 bool 默认为false
ImageFitType 贴合方式 int 绘制区域四边形内视频画面的填充方式。 以四边形的关键点(0,1,2,3)顺序为准,
有0-顺序贴合(); 1-逆时针转90度(1,2,3,0); 2-逆时针转180度(2,3,0,1); 3-顺时针转90度(3,0,1,2)。默认为0
AreaPoints 坐标点集 x,y,z列表 需传入世界坐标集,中间用;分隔,并以;结尾。 一般需要传4个关键点坐标
TransFormNodePos 坐标偏移值 x,y,z 整个视频画面整体修正值。该值是为了防止大坐标导致画面抖动而设定的。 一般传入之前获取结果保存的值即可

获取结果说明

视频投影可以通过图层对象的GetLayerResult() 方法获取结果。获取的结果值对象参数如下表所示:

配置项 配置说明 值类型 备注
ID 区域ID int 一个图层中可包含多个视频画面,每个画面都需要设定一个唯一id。默认为0
LineColor 线颜色 R,G,B,A 颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0"
LineWidth 线宽度 float 线宽度取值范围在1-10之间
LineIsVisible 线框是否可见 bool 默认为false
AreaPoints 坐标点集 x,y,z列表 需传入经度,纬度,高程坐标集,中间用;分隔,并以;结尾。 一般需要传4个关键点坐标
TransFormNodePos 坐标偏移值 x,y,z 整个视频画面整体修正值。 该值是为了防止大坐标导致画面抖动而设定的
ImageIsVisible 是否显示 bool 可通过该配置项控制视频画面的显隐状态。 默认为true显示
ImageFitType 贴合方式 int 绘制区域四边形内视频画面的填充方式。 以四边形的关键点(0,1,2,3)顺序为准,
有0-顺序贴合(); 1-逆时针转90度(1,2,3,0); 2-逆时针转180度(2,3,0,1); 3-顺时针转90度(3,0,1,2)。默认为0
WaitImagePath 等待图片地址 string 等待加载图片地址,如不设则用默认画面
VideoResources 视频路径 string 指定加载视频源的路径地址

代码调用示例

Javascript调用

var videoAreaLayer = null;
var bVisible = true;
var myEditId = document.getElementById("Textid");
var mStepValue = document.getElementById("StepValue");
var mySelect = document.getElementById("Select");
//创建视频区域投影图层
function createVideoAreaLayer(){
    if(videoAreaLayer == null){
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
        videoAreaLayer = map.CreateLayer("AnalysisLayer", tlo);//创建分析图层,第一项参数必须为AnalysisLayer
        map.AddLayer(videoAreaLayer);// 添加分析图层
        alert("请点击‘新增视频投影区域’按钮,创建投影区域;或者‘根据预设点位加载’来直接加载投影区域!");
    }else{
        alert("已存在视屏区域投影图层,无需重复创建!");
    }
}
//移除视频区域投影图层
function removeVideoAreaLayer(){
    if(videoAreaLayer){
        map.RemoveLayer(videoAreaLayer);
        videoAreaLayer = null;
    }else{
        alert("图层为空,无需重复删除!");
    }
}

// 相关设备信息按项目现场配置
//本地视频:视频绝对路径
//海康设备1:IP,Port,channel,User,Password
//海康设备2:IP,Port,channel(1),User,Password
//大华设备:IP,Port,User,password,设备编号,主辅流
//海康RTSP码流: 码流访问地址

//新增视频投影区域
function addVideoArea(){
    if(myEditId.value == "")
    {
        alert("请先填入区域ID");
        return;
    }
    if(videoAreaLayer){
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
        tlo.AddConfig("IsCreateSingleArea", "true");//是否需要创建区域
        tlo.AddConfig("IsDelete", "false");//是否删除
        tlo.AddConfig("IsAllOperator", "false");//是否批量操作
        tlo.AddConfig("LineColor", "0.3, 0.3, 0.4, 1.0");//线框颜色rgba
        tlo.AddConfig("LineWidth", "5.0");//线框宽
        tlo.AddConfig("LineIsVisible", "true");//绘制时线框可见否
        tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID            
        alert(myEditId.value);
        //tlo.AddConfig("VideoResources", "172.6.12.108,9000,system,123456,1000117$1$0$0,1;");
        tlo.AddConfig("WaitImagePath", gWaitImagePath);//默认加载图片
        tlo.AddConfig("VideoResources", gVideoPath);//视频路径
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }else{
        alert("不存在图层,无法更新!");
    }
}
//显隐视频区域投影图层
function visibleVideoArea(){
    if(myEditId.value == "")
    {
        alert("请先填入区域ID");
        return;
    }
    if(videoAreaLayer){
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID    
        tlo.AddConfig("ImageIsVisible", String(bVisible = !bVisible));//图片显隐
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }else{
        alert("不存在图层,无法更新!");
    }
}
//删除视频投影区域
function delVideoArea(){
    if(myEditId.value == "")
    {
        alert("请先填入区域ID");
        return;
    }
    if(videoAreaLayer){
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID    
        tlo.AddConfig("IsDelete", "true");
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }else{
        alert("不存在图层,无法更新!");
    }
}
//调整经度+
function lonPlus(){
    if(myEditId.value == "")
    {
        alert("请先填入区域ID");
        return;
    }
    var moveInfo = mStepValue.value + ",0.0,0.0";
    var moveType = mySelect.options[mySelect.selectedIndex].value;
    if(videoAreaLayer){
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID    
        tlo.AddConfig("MoveType", moveType);//是否移动及移动方式, 不添加默认不移动
        tlo.AddConfig("MoveDistance", moveInfo);//移动(经纬度、高程), 不添加默认不移动
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
}
//调整经度-
function lonMinus(){
    if(myEditId.value == "")
    {
        alert("请先填入区域ID");
        return;
    }
    var moveInfo = "-" + mStepValue.value + ",0.0,0.0";
    var moveType = mySelect.options[mySelect.selectedIndex].value;
    if(videoAreaLayer){
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID    
        tlo.AddConfig("MoveType", moveType);//是否移动及移动方式, 不添加默认不移动
        tlo.AddConfig("MoveDistance", moveInfo);//移动(经纬度、高程), 不添加默认不移动
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
}
//调整纬度+
function latPlus(){
    if(myEditId.value == "")
    {
        alert("请先填入区域ID");
        return;
    }
    var moveInfo = "0.0," + mStepValue.value + ",0.0";
    var moveType = mySelect.options[mySelect.selectedIndex].value;
    if(videoAreaLayer){
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID    
        tlo.AddConfig("MoveType", moveType);//是否移动及移动方式, 不添加默认不移动
        tlo.AddConfig("MoveDistance", moveInfo);//移动(经纬度、高程), 不添加默认不移动
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
}
//调整纬度-
function latMinus(){
    if(myEditId.value == "")
    {
        alert("请先填入区域ID");
        return;
    }
    var moveInfo = "0.0,-" + mStepValue.value + ",0.0";
    var moveType = mySelect.options[mySelect.selectedIndex].value;
    if(videoAreaLayer){
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID    
        tlo.AddConfig("MoveType", moveType);//是否移动及移动方式, 不添加默认不移动
        tlo.AddConfig("MoveDistance", moveInfo);//移动(经纬度、高程), 不添加默认不移动
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
}
//调整高度+
function heightPlus(){
    if(myEditId.value == "")
    {
        alert("请先填入区域ID");
        return;
    }
    var moveInfo = "0.0,0.0," + mStepValue.value * 10000;
    var moveType = mySelect.options[mySelect.selectedIndex].value;
    if(videoAreaLayer){
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID    
        tlo.AddConfig("MoveType", moveType);//是否移动及移动方式, 不添加默认不移动
        tlo.AddConfig("MoveDistance", moveInfo);//移动(经纬度、高程), 不添加默认不移动
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
}
//调整高度-
function heightMinus(){
    if(myEditId.value == "")
    {
        alert("请先填入区域ID");
        return;
    }
    var moveInfo = "0.0,0.0,-" + mStepValue.value * 10000;
    var moveType = mySelect.options[mySelect.selectedIndex].value;
    if(videoAreaLayer){
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", String(myEditId.value));//所创建区域ID    
        tlo.AddConfig("MoveType", moveType);//是否移动及移动方式, 不添加默认不移动
        tlo.AddConfig("MoveDistance", moveInfo);//移动(经纬度、高程), 不添加默认不移动
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
}
//获取并保存视频投影参数
function getParam(){
    if(myEditId.value == "")
    {
        alert("请先填入区域ID");
        return;
    }
    if(videoAreaLayer){
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
        tlo.AddConfig("IsSaveParam", "true");
        tlo.AddConfig("SaveID", String(myEditId.value));//需要保存的ID,必须有,若id不对应,则没有参数传出
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
        //获取视频投影参数
        sleep(200);//延时获取
        var mAreaPoints = videoAreaLayer.GetLayerResult().GetConfigValueByKey("AreaPoints");//获取区域视频投影坐标点位
        var mTransFormNodePos = videoAreaLayer.GetLayerResult().GetConfigValueByKey("TransFormNodePos");//获取区域视频投影偏移值
        var mID = videoAreaLayer.GetLayerResult().GetConfigValueByKey("ID");//获取区域视频投影ID
        var mLineIsVisible = videoAreaLayer.GetLayerResult().GetConfigValueByKey("LineIsVisible");//是否隐藏边框线
        var mLineWidth = videoAreaLayer.GetLayerResult().GetConfigValueByKey("LineWidth");//获取边框线宽
        var mLineColor = videoAreaLayer.GetLayerResult().GetConfigValueByKey("LineColor");//获取边框线颜色
        var mVideoResources = videoAreaLayer.GetLayerResult().GetConfigValueByKey("VideoResources");//获取视频源路径
        var mImageIsVisible = videoAreaLayer.GetLayerResult().GetConfigValueByKey("ImageIsVisible");//图片是否显示
        var mImageFitType = videoAreaLayer.GetLayerResult().GetConfigValueByKey("ImageFitType");//纹理贴合方式
        alert("AreaPoints:"+mAreaPoints+";TransFormNodePos:"+mTransFormNodePos+";ID:"+mID+";LineIsVisible:"+mLineIsVisible+";LineWidth:"+mLineWidth+";LineColor:"+mLineColor+";VideoResources:"+videoAreaLayer.GetLayerResult().GetConfigValueByKey("AreaPoints")+";ImageIsVisible:"+mImageIsVisible+";ImageFitType:"+mImageFitType);
    }else{
        alert("图层为空,无法获取参数!");
    }
}
//根据预设点位加载
function loadByPosition(){
    if(myEditId.value == "")
    {
        alert("请先填入区域ID");
        return;
    }
    if(videoAreaLayer){
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
        tlo.AddConfig("IsLoad", "true");//通过参数重加载视频投影            
        tlo.AddConfig("ID", String(myEditId.value));//区域ID,此处暂以1代替,需传入实际值
        tlo.AddConfig("AreaPoints", "-2776468.27906,3190574.52284,-4766936.67503;-2776512.09532,3190520.31327,-4766948.4827;-2776466.44834,3190494.76636,-4766990.10722;-2776422.08869,3190547.14723,-4766980.64915;");
        tlo.AddConfig("TransFormNodePos", "-2776449.1087,3190559.21823,-4767049.84615");//偏移量,传入对应保存的值
        tlo.AddConfig("LineWidth", "5");//线框宽度   
        tlo.AddConfig("LineColor", "0,0.1,0.8,0.5");//线框颜色  
        tlo.AddConfig("LineIsVisible", "false");
        tlo.AddConfig("VideoResources", gVideoPath);//视屏资源路径
        tlo.AddConfig("ImageIsVisible", "true");//图片显隐
        tlo.AddConfig("ImageFitType", "0");//贴合方式
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }else{
        alert("图层为空,无法更新!");
    }
}

C++调用

BaseObjectCOMLib::ILayerObjectPtr videoAreaLayer;//视频投影图层
bool bVisible;
CEdit myEditId;//id输入框对象
CEdit mStepValue;//编辑输入框对象
CComboBox m_combo;//下拉框对象
std::string value;//视频id
std::string value1;//编辑值
std::string moveType;//下拉框内容
//获取id
void Cf3c2VideoDlg::OnEnChangeEdit1()
{
    CString m_paramname;
    myEditId.GetWindowText(m_paramname);
    value = CT2A(m_paramname.GetBuffer());
}
//获取编辑值
void Cf3c2VideoDlg::OnEnChangeEdit2()
{
    CString m_paramname;
    mStepValue.GetWindowText(m_paramname);
    value1 = CT2A(m_paramname.GetBuffer());
}
//获取移动类型
void Cf3c2VideoDlg::OnCbnSelchangeCombo1()
{
    CString m_paramname;
    m_combo.GetLBText(m_combo.GetCurSel(),m_paramname);
    std::string value = CT2A(m_paramname.GetBuffer());
    if(value =="整体编辑")
    {
        moveType = "1";
    }
    else if(value =="边角点一")
    {
        moveType = "20";
    }
    else if(value =="边角点二")
    {
        moveType = "21";
    }
    else if(value =="边角点三")
    {
        moveType = "22";
    }
    else if(value =="边角点四")
    {
        moveType = "23";
    }
}
//获取下拉框内容
void Cf3c2VideoDlg::OnCbnSetfocusCombo1()
{
    m_combo.ResetContent();//清空下拉框
    m_combo.AddString(L"整体编辑");
    m_combo.AddString(L"边角点一");
    m_combo.AddString(L"边角点二");
    m_combo.AddString(L"边角点三");
    m_combo.AddString(L"边角点四");
    m_combo.SetCurSel(0);
}
//创建视频区域投影图层
void Cf3c2VideoDlg::OnBnClickedcreatevideoarealayer()
{
    if(videoAreaLayer)
    {
        return;
    }
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
    videoAreaLayer = map->CreateLayer("AnalysisLayer", tlo);//创建分析图层,第一项参数必须为AnalysisLayer
    map->AddLayer(videoAreaLayer);// 添加分析图层
}

// 相关设备信息按项目现场配置
//本地视频:视频绝对路径
//海康设备1:IP,Port,channel,User,Password
//海康设备2:IP,Port,channel(1),User,Password
//大华设备:IP,Port,User,password,设备编号,主辅流
//海康RTSP码流: 码流访问地址
//新增视频投影区域
void Cf3c2VideoDlg::OnBnClickedaddvideoarea()
{
    if(!videoAreaLayer)
    {
        return;
    }
    char temp_status[MAX_PATH];
    GetPrivateProfileStringA("Path", "VideoPath", "", temp_status, MAX_PATH, mIniPath.c_str());
    std::string VideoPath(temp_status);

    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
    tlo->AddConfig("IsCreateSingleArea", "true");//是否需要创建区域
    tlo->AddConfig("IsDelete", "false");//是否删除
    tlo->AddConfig("IsAllOperator", "false");//是否批量操作
    tlo->AddConfig("LineColor", "0.3, 0.3, 0.4, 1.0");//线框颜色rgba
    tlo->AddConfig("LineWidth", "5.0");//线框宽
    tlo->AddConfig("LineIsVisible", "true");//绘制时线框可见否
    tlo->AddConfig("ID", value.c_str());//所创建区域ID        
    //tlo->AddConfig("VideoResources", "172.6.12.108,9000,system,123456,1000117$1$0$0,1;");
    tlo->AddConfig("VideoResources", VideoPath.c_str());//视频路径
    videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}

//根据预设点位加载
void Cf3c2VideoDlg::OnBnClickedloadbyposition()
{
    if(!videoAreaLayer)
    {
        return;
    }
    char temp_status[MAX_PATH];
    GetPrivateProfileStringA("Path", "VideoPath", "", temp_status, MAX_PATH, mIniPath.c_str());
    std::string VideoPath(temp_status);

    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
    tlo->AddConfig("IsLoad", "true");//通过参数重加载视频投影            
    tlo->AddConfig("ID", value.c_str());//区域ID
    tlo->AddConfig("AreaPoints", "-2776468.27906,3190574.52284,-4766936.67503;-2776512.09532,3190520.31327,-4766948.4827;-2776466.44834,3190494.76636,-4766990.10722;-2776422.08869,3190547.14723,-4766980.64915;");
    tlo->AddConfig("TransFormNodePos", "-2776449.1087,3190559.21823,-4767049.84615");//偏移量,传入对应保存的值
    tlo->AddConfig("LineWidth", "5");//线框宽度   
    tlo->AddConfig("LineColor", "0,0.1,0.8,0.5");//线框颜色  
    tlo->AddConfig("LineIsVisible", "false");
    tlo->AddConfig("VideoResources", VideoPath.c_str());//视屏资源路径
    tlo->AddConfig("ImageIsVisible", "true");//图片显隐
    tlo->AddConfig("ImageFitType", "0");//贴合方式
    videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}

//显隐视频区域投影图层
void Cf3c2VideoDlg::OnBnClickedvisiblevideoarea()
{
    if(!videoAreaLayer)
    {
        return;
    }
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
    tlo->AddConfig("ID", value.c_str());//所创建区域ID    
    bVisible = !bVisible;
    std::stringstream stream;
    stream << bVisible;
    tlo->AddConfig("ImageIsVisible",stream.str().c_str() );//图片显隐
    videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}

//删除视频投影区域
void Cf3c2VideoDlg::OnBnClickeddelvideoarea()
{
    if(!videoAreaLayer)
    {
        return;
    }
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
    tlo->AddConfig("ID", value.c_str());//所创建区域ID    
    tlo->AddConfig("IsDelete", "true");
    videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}

//移除视频区域投影图层
void Cf3c2VideoDlg::OnBnClickedremovevideoarealayer()
{
    if(!videoAreaLayer)
    {
        return;
    }
    map->RemoveLayer(videoAreaLayer);
    videoAreaLayer = NULL;
}

//调整经度+
void Cf3c2VideoDlg::OnBnClickedlonplus()
{
    if(!videoAreaLayer)
    {
        return;
    }
    std::string moveInfo = value1+",0.0,0.0";
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
    tlo->AddConfig("ID", value.c_str());//所创建区域ID    
    tlo->AddConfig("MoveType", moveType.c_str());//是否移动及移动方式, 不添加默认不移动
    tlo->AddConfig("MoveDistance", moveInfo.c_str());//移动(经纬度、高程), 不添加默认不移动
    videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}

//调整经度-
void Cf3c2VideoDlg::OnBnClickedlonminus()
{
    if(!videoAreaLayer)
    {
        return;
    }
    std::string moveInfo = "-" +  value1 + ",0.0,0.0";
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
    tlo->AddConfig("ID", value.c_str());//所创建区域ID    
    tlo->AddConfig("MoveType", moveType.c_str());//是否移动及移动方式, 不添加默认不移动
    tlo->AddConfig("MoveDistance", moveInfo.c_str());//移动(经纬度、高程), 不添加默认不移动
    videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}

//调整纬度+
void Cf3c2VideoDlg::OnBnClickedlatplus()
{
    if(!videoAreaLayer)
    {
        return;
    }
    std::string moveInfo ="0.0," + value + ",0.0";
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
    tlo->AddConfig("ID", value.c_str());//所创建区域ID    
    tlo->AddConfig("MoveType", moveType.c_str());//是否移动及移动方式, 不添加默认不移动
    tlo->AddConfig("MoveDistance", moveInfo.c_str());//移动(经纬度、高程), 不添加默认不移动
    videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}

//调整纬度-
void Cf3c2VideoDlg::OnBnClickedlatminus()
{
    if(!videoAreaLayer)
    {
        return;
    }
    std::string moveInfo ="0.0,-" + value + ",0.0";
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
    tlo->AddConfig("ID", value.c_str());//所创建区域ID    
    tlo->AddConfig("MoveType", moveType.c_str());//是否移动及移动方式, 不添加默认不移动
    tlo->AddConfig("MoveDistance", moveInfo.c_str());//移动(经纬度、高程), 不添加默认不移动
    videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}

//调整高度+
void Cf3c2VideoDlg::OnBnClickedheightplus()
{
    if(!videoAreaLayer)
    {
        return;
    }
    std::string moveInfo = "0.0,0.0," + value;
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
    tlo->AddConfig("ID", value.c_str());//所创建区域ID    
    tlo->AddConfig("MoveType", moveType.c_str());//是否移动及移动方式, 不添加默认不移动
    tlo->AddConfig("MoveDistance", moveInfo.c_str());//移动(经纬度、高程), 不添加默认不移动
    videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}

//调整高度-
void Cf3c2VideoDlg::OnBnClickedheightminus()
{
    if(!videoAreaLayer)
    {
        return;
    }
    std::string moveInfo ="0.0,0.0,-" + value;;
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
    tlo->AddConfig("ID", value.c_str());//所创建区域ID    
    tlo->AddConfig("MoveType", moveType.c_str());//是否移动及移动方式, 不添加默认不移动
    tlo->AddConfig("MoveDistance", moveInfo.c_str());//移动(经纬度、高程), 不添加默认不移动
    videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
}

//获取视频投影参数
void Cf3c2VideoDlg::OnBnClickedgetparam()
{
    if(!videoAreaLayer)
    {
        return;
    }
    ConfigOptionsCOMLib::ILayerOptionsPtr tlo = (ConfigOptionsCOMLib::ILayerOptionsPtr)map->CreateLayerOptions("plot"); //创建图层配置对象,任意名称
    tlo->AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
    tlo->AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
    tlo->AddConfig("IsSaveParam", "true");
    tlo->AddConfig("SaveID", value.c_str());//需要保存的ID,必须有,若id不对应,则没有参数传出
    videoAreaLayer->UpdateLayerOptions(tlo);//更新图层
    //获取视频投影参数
    Sleep(200);//延时获取
    ConfigOptionsCOMLib::ILayerOptionsPtr opt = videoAreaLayer->GetLayerResult();
    CString AreaPoints = opt->GetConfigValueByKey("AreaPoints");//获取区域视频投影坐标点位
    CString TransFormNodePos = opt->GetConfigValueByKey("TransFormNodePos");//获取区域视频投影偏移值
    CString ID = opt->GetConfigValueByKey("ID");//获取区域视频投影ID
    CString LineIsVisible = opt->GetConfigValueByKey("LineIsVisible");//是否隐藏边框线ID
    CString LineWidth = opt->GetConfigValueByKey("LineWidth");//获取边框线宽
    CString LineColor = opt->GetConfigValueByKey("LineColor");//获取边框线颜色
    CString VideoResources = opt->GetConfigValueByKey("VideoResources");//获取视频源路径
    CString ImageIsVisible = opt->GetConfigValueByKey("ImageIsVisible");//图片是否显示
    CString ImageFitType = opt->GetConfigValueByKey("ImageFitType");//纹理贴合方式
    MessageBox(L"AreaPoints:"+ AreaPoints+ L"\r\n"+L"TransFormNodePos:"+TransFormNodePos+L"\r\n"+"ID:"+ID+L"\r\n"+L"LineIsVisible:"+LineIsVisible+L"\r\n"+L"LineWidth:"+LineWidth+L"\r\n"+L"LineColor:"+LineColor+L"\r\n"+L"VideoResources:"+VideoResources+L"\r\n"+L"ImageIsVisible:"+ImageIsVisible+L"\r\n"+L"ImageFitType:"+ImageFitType);
}

C#调用

ILayerObject videoAreaLayer = null;
bool bVisible = true;
gWaitImagePath = readini("Path", "IconFolderPath", "", filepath) + "/loading.jpg";
gVideoPath = readini("Path", "VideoPath", "", filepath);
//创建视频区域投影图层
private void createVideoAreaLayer_Click(object sender, EventArgs e)
{
    if (videoAreaLayer == null)
    {
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
        videoAreaLayer = map.CreateLayer("AnalysisLayer", tlo);//创建分析图层,第一项参数必须为AnalysisLayer
        map.AddLayer(videoAreaLayer);// 添加分析图层
        MessageBox.Show("请点击‘新增视频投影区域’按钮,创建投影区域;或者‘根据预设点位加载’来直接加载投影区域!");
    }
    else
    {
        MessageBox.Show("已存在视屏区域投影图层,无需重复创建!");
    }
}

// 相关设备信息按项目现场配置
//本地视频:视频绝对路径
//海康设备1:IP,Port,channel,User,Password
//海康设备2:IP,Port,channel(1),User,Password
//大华设备:IP,Port,User,password,设备编号,主辅流
//海康RTSP码流: 码流访问地址

private void addVideoArea_Click(object sender, EventArgs e)
{
    if (videoAreaLayer!=null)
    {
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
        tlo.AddConfig("IsCreateSingleArea", "true");//是否需要创建区域
        tlo.AddConfig("IsDelete", "false");//是否删除
        tlo.AddConfig("IsAllOperator", "false");//是否批量操作
        tlo.AddConfig("LineColor", "0.3, 0.3, 0.4, 1.0");//线框颜色rgba
        tlo.AddConfig("LineWidth", "5.0");//线框宽
        tlo.AddConfig("LineIsVisible", "true");//绘制时线框可见否
        tlo.AddConfig("ID", textBox1.Text);//所创建区域ID
        tlo.AddConfig("WaitImagePath", gWaitImagePath);//默认加载图片
        MessageBox.Show(textBox1.Text);
        //tlo.AddConfig("VideoResources", "172.6.12.108,9000,system,123456,1000117$1$0$0,1;");
        tlo.AddConfig("VideoResources", readini("Path", "VideoPath", "", filepath));//视频路径
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
    else
    {
        MessageBox.Show("不存在图层,无法更新!");
    }
}
//根据预设点位加载
private void loadByPosition_Click(object sender, EventArgs e)
{
    if (videoAreaLayer!=null)
    {
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
        tlo.AddConfig("IsLoad", "true");//通过参数重加载视频投影            
        tlo.AddConfig("ID", textBox1.Text);//区域ID,此处暂以1代替,需传入实际值
        tlo.AddConfig("AreaPoints", "-2776468.27906,3190574.52284,-4766936.67503;-2776512.09532,3190520.31327,-4766948.4827;-2776466.44834,3190494.76636,-4766990.10722;-2776422.08869,3190547.14723,-4766980.64915;");
        tlo.AddConfig("TransFormNodePos", "-2776449.1087,3190559.21823,-4767049.84615");//偏移量,传入对应保存的值
        tlo.AddConfig("LineWidth", "5");//线框宽度   
        tlo.AddConfig("LineColor", "0,0.1,0.8,0.5");//线框颜色  
        tlo.AddConfig("LineIsVisible", "false");
        tlo.AddConfig("VideoResources", readini("Path", "VideoPath", "", filepath));//视屏资源路径
        tlo.AddConfig("ImageIsVisible", "true");//图片显隐
        tlo.AddConfig("ImageFitType", "1");//贴合方式
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
    else
    {
        MessageBox.Show("图层为空,无法更新!");
    }
}
//显隐视频区域投影图层
private void visibleVideoArea_Click(object sender, EventArgs e)
{
    if (videoAreaLayer!=null)
    {
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", textBox1.Text);//所创建区域ID    
        tlo.AddConfig("ImageIsVisible",(bVisible = !bVisible).ToString());//图片显隐
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
    else
    {
        MessageBox.Show("不存在图层,无法更新!");
    }
}
//删除视频投影区域
private void delVideoArea_Click(object sender, EventArgs e)
{
    if (videoAreaLayer!=null)
    {
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", textBox1.Text);//所创建区域ID    
        tlo.AddConfig("IsDelete", "true");
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
    else
    {
        MessageBox.Show("不存在图层,无法更新!");
    }
}
//移除视频区域投影图层
private void removeVideoAreaLayer_Click(object sender, EventArgs e)
{
    if (videoAreaLayer!=null)
    {
        map.RemoveLayer(videoAreaLayer);
        videoAreaLayer = null;
    }
    else
    {
        MessageBox.Show("图层为空,无需重复删除!");
    }
}
//返回移动类型
private string GetMoveType()
{
    Console.WriteLine("Text:" + comboBox1.SelectedItem.ToString());
    switch (comboBox1.SelectedItem.ToString())
    {
        case "整体编辑":
            return "1";
            break;
        case "边角点一":
            return "20";
            break;
        case "边角点二":
            return "21";
            break;
        case "边角点三":
            return "22";
            break;
        case "边角点四":
            return "23";
            break;
    }
    return "1";
}
//调整经度-
private void lonMinus_Click(object sender, EventArgs e)
{
    if (videoAreaLayer != null)
    {
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", textBox1.Text);//所创建区域ID    
        tlo.AddConfig("MoveType", GetMoveType());//是否移动及移动方式, 不添加默认不移动
        tlo.AddConfig("MoveDistance", "-0.0000001,0.0,0.0");//移动(经纬度、高程), 不添加默认不移动
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
}
//调整经度+
private void lonPlus_Click(object sender, EventArgs e)
{
    if (videoAreaLayer!=null)
    {
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", textBox1.Text);//所创建区域ID    
        tlo.AddConfig("MoveType", GetMoveType());//是否移动及移动方式, 不添加默认不移动
        tlo.AddConfig("MoveDistance", "0.0000001,0.0,0.0");//移动(经纬度、高程), 不添加默认不移动
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
}
//调整纬度+
private void latPlus_Click(object sender, EventArgs e)
{
    if (videoAreaLayer != null)
    {
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", textBox1.Text);//所创建区域ID    
        tlo.AddConfig("MoveType", GetMoveType());//是否移动及移动方式, 不添加默认不移动
        tlo.AddConfig("MoveDistance", "0,0.0000001,0.0");//移动(经纬度、高程), 不添加默认不移动
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
}
//调整纬度-
private void latMinus_Click(object sender, EventArgs e)
{
    if (videoAreaLayer != null)
    {
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", textBox1.Text);//所创建区域ID    
        tlo.AddConfig("MoveType", GetMoveType());//是否移动及移动方式, 不添加默认不移动
        tlo.AddConfig("MoveDistance", "0,-0.0000001,0.0");//移动(经纬度、高程), 不添加默认不移动
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
}
//调整高度+
private void heightPlus_Click(object sender, EventArgs e)
{
    if (videoAreaLayer != null)
    {
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", textBox1.Text);//所创建区域ID    
        tlo.AddConfig("MoveType", GetMoveType());//是否移动及移动方式, 不添加默认不移动
        tlo.AddConfig("MoveDistance", "0,0,0.1");//移动(经纬度、高程), 不添加默认不移动
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
}
//调整高度-
private void heightMinus_Click(object sender, EventArgs e)
{
    if (videoAreaLayer != null)
    {
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件    
        tlo.AddConfig("ID", textBox1.Text);//所创建区域ID    
        tlo.AddConfig("MoveType", GetMoveType());//是否移动及移动方式, 不添加默认不移动
        tlo.AddConfig("MoveDistance", "0,0,-0.1");//移动(经纬度、高程), 不添加默认不移动
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
    }
}
//获取并保存视频投影参数
private void getParam_Click(object sender, EventArgs e)
{
    if (videoAreaLayer!=null)
    {
        var tlo = map.CreateLayerOptions("vArea");//创建分析图层配置,给配置起个名称,任意名称
        tlo.AddConfig("LayerOptionsName", "AnalysisLayerOptions");//创建配置类型, AnalysisLayerOptions代表分析图层数据配置,必须是此键值对
        tlo.AddConfig("DataSourceTypeName", "as_videoarea");//此处格式固定,使用区域投影插件
        tlo.AddConfig("IsSaveParam", "true");
        tlo.AddConfig("SaveID", textBox1.Text);//需要保存的ID,必须有,若id不对应,则没有参数传出
        videoAreaLayer.UpdateLayerOptions(tlo);//更新图层
        //获取视频投影参数
        Thread.Sleep(200);//延时获取
        var mAreaPoints = videoAreaLayer.GetLayerResult().GetConfigValueByKey("AreaPoints");//获取区域视频投影坐标点位
        var mTransFormNodePos = videoAreaLayer.GetLayerResult().GetConfigValueByKey("TransFormNodePos");//获取区域视频投影偏移值
        var mID = videoAreaLayer.GetLayerResult().GetConfigValueByKey("ID");//获取区域视频投影ID
        var mLineIsVisible = videoAreaLayer.GetLayerResult().GetConfigValueByKey("LineIsVisible");//是否隐藏边框线
        var mLineWidth = videoAreaLayer.GetLayerResult().GetConfigValueByKey("LineWidth");//获取边框线宽
        var mLineColor = videoAreaLayer.GetLayerResult().GetConfigValueByKey("LineColor");//获取边框线颜色
        var mVideoResources = videoAreaLayer.GetLayerResult().GetConfigValueByKey("VideoResources");//获取视频源路径
        var mImageIsVisible = videoAreaLayer.GetLayerResult().GetConfigValueByKey("ImageIsVisible");//图片是否显示
        var mImageFitType = videoAreaLayer.GetLayerResult().GetConfigValueByKey("ImageFitType");//纹理贴合方式
        MessageBox.Show("AreaPoints:" + mAreaPoints + ";TransFormNodePos:" + mTransFormNodePos + ";ID:" + mID + ";LineIsVisible:" + mLineIsVisible + ";LineWidth:" + mLineWidth + ";LineColor:" + mLineColor + ";VideoResources:" + videoAreaLayer.GetLayerResult().GetConfigValueByKey("AreaPoints") + ";ImageIsVisible:" + mImageIsVisible + ";ImageFitType:" + mImageFitType);
    }
    else
    {
        MessageBox.Show("图层为空,无法获取参数!");
    }
}

results matching ""

    No results matching ""