2.6.7 图层高亮
图层高亮
图层高亮操作是指将单个图层内的所有数据附上一种颜色并高亮显示的更新操作。
图层高亮主要包括添加(创建)、更新和删除3种操作。
下图是图层高亮效果:
参数说明
图层高亮可配置的参数如下表所示:
配置项 | 配置说明 | 值类型 | 备注 |
---|---|---|---|
OptionsTypeName | 操作配置项类名 | string | HighlightOperationOptions代表图层高亮操作 |
Color | 高亮颜色 | R,G,B,A | 颜色取值范围在0-1.0之间,如 "0.9,0.8,0.8,1.0",A的取值必须大于0.2 |
LightState | 是否高亮 | bool | 默认值false,设为true,则Color 配置的颜色起效 |
LayerIdList | 图层ID列表 | int列表 | 传-1则默认遍历所有模型图层,若为多个图层,可使用xx,xx,xx 此种格式。图层Id可以通过图层对象的GetLayerId()方法获取 |
代码调用示例
Javascript调用
var operationPtr = null;
//启动图层高亮操作
function CreateHaloOperation(){
if(operationPtr == null){
var tlo = map.CreateOperationOptions("Halo");//创建更新配置对象,任意名称
tlo.AddConfig("OptionsTypeName", "HighlightOperationOptions");//更新类型,HighlightOperationOptions代表图层模型高亮操作
tlo.AddConfig("LayerIdList", gModelLayer.GetLayerId());//图层id,id之间用","隔开
tlo.AddConfig("LightState", "true");//是否高亮
tlo.AddConfig("Color", "0.2, 0.2, 0.2, 0.9");//高亮颜色
operationPtr = map.CreateOperation("HighlightOperation", tlo); //根据配置创建图层模型高亮操作
map.AddOperation(operationPtr); //添加更新操作
}else{
alert("操作对象已存在,无需创建!");
}
}
//移除图层高亮操作
function removeHaloOperation(){
if(operationPtr){
var tlo = map.CreateOperationOptions("Halo"); //创建更新配置对象,任意名称
tlo.AddConfig("OptionsTypeName", "HighlightOperationOptions");//更新类型,HighlightOperationOptions代表图层模型高亮操作
tlo.AddConfig("LayerIdList", gModelLayer.GetLayerId());//图层id,id之间用","隔开
tlo.AddConfig("LightState", "false");//是否高亮
operationPtr.UpdateOperationOptions(tlo);//更新高亮操作
map.RemoveOperation(operationPtr);//移除更新对象
operationPtr = null;
}else{
alert("操作对象不存在,无需重复移除!");
}
}
C++调用
//开启高亮前,需要先获取需要高亮的图层对象
BaseObjectCOMLib::ILayerObjectPtr modelLayer;//模型图层
BaseObjectCOMLib::IOperationObjectPtr operationPtr;//更新对象
//启动高亮操作
void Cf5c6HighlightDlg::OnBnClickedCreatehalooperation()
{
if(operationPtr)
{
return;
}
std::stringstream stream;
stream << modelLayer->GetLayerID();
ConfigOptionsCOMLib::IOperationOptionPtr tlo = map->CreateOperationOptions("");//创建配置类型,操作类型的配置
tlo->AddConfig("OptionsTypeName", "HighlightOperationOptions");//更新类型,HighlightOperationOptions代表图层模型高亮操作
tlo->AddConfig("LayerIdList", stream.str().c_str());//图层id,id之间用","隔开
tlo->AddConfig("LightState", "true");//是否高亮
tlo->AddConfig("Color", "0.2, 0.2, 0.2, 0.9");//高亮颜色
operationPtr = map->CreateOperation("HighlightOperation", tlo); //根据配置创建图层模型高亮操作
map->AddOperation(operationPtr); //添加更新操作
}
//移除高亮操作
void Cf5c6HighlightDlg::OnBnClickedremovehalooperation()
{
if(!operationPtr)
{
return;
}
//先取消高亮
std::stringstream stream;
stream << modelLayer->GetLayerID();
ConfigOptionsCOMLib::IOperationOptionPtr tlo = map->CreateOperationOptions("");//创建配置类型,操作类型的配置
tlo->AddConfig("OptionsTypeName", "HighlightOperationOptions");//更新类型,HighlightOperationOptions代表图层模型高亮操作
tlo->AddConfig("LayerIdList", stream.str().c_str());//图层id,id之间用","隔开
tlo->AddConfig("LightState", "false");//是否高亮
operationPtr.UpdateOperationOptions(tlo);//更新高亮操作
//删除高亮更新操作
map->RemoveOperation(operationPtr);//移除更新操作
operationPtr = NULL;
}
C#调用
IOperationObject operationPtr;
private void CreateHaloOperation_Click(object sender, EventArgs e)
{
if (operationPtr == null)
{
var tlo = map.CreateOperationOptions("Halo");//创建更新配置对象,任意名称
tlo.AddConfig("OptionsTypeName", "HighlightOperationOptions");//更新类型,HighlightOperationOptions代表图层模型高亮操作
tlo.AddConfig("LayerIdList", modelLayer.GetLayerID());//图层id,id之间用","隔开
tlo.AddConfig("LightState", "true");//是否高亮
tlo.AddConfig("Color", "0.2, 0.2, 0.2, 0.9");//高亮颜色
operationPtr = map.CreateOperation("HighlightOperation", tlo); //根据配置创建图层模型高亮操作
map.AddOperation(operationPtr); //添加更新操作
}
else
{
MessageBox.Show("操作对象已存在,无需创建!");
}
}
//移除图层高亮操作
private void removeHaloOperation_Click(object sender, EventArgs e)
{
if (operationPtr!=null)
{
//先取消高亮
var tlo = map.CreateOperationOptions("Halo"); //创建更新配置对象,任意名称
tlo.AddConfig("OptionsTypeName", "HighlightOperationOptions");//更新类型,HighlightOperationOptions代表图层模型高亮操作
tlo.AddConfig("LayerIdList", modelLayer.GetLayerID());//图层id,id之间用","隔开
tlo.AddConfig("LightState", "false");//是否高亮
operationPtr.UpdateOperationOptions(tlo);//更新高亮操作
map.RemoveOperation(operationPtr);//移除更新操作
operationPtr = null;
}
else
{
MessageBox.Show("操作对象不存在,无需重复移除!");
}
}