首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 企业软件 > 行业软件 >

关于mapx动态创建图层的有关问题

2012-04-09 
关于mapx动态创建图层的问题我在进行动态创建图层的时候,会重复进行创建,当第二次创建时,就会报错Non-Uniq

关于mapx动态创建图层的问题
我在进行动态创建图层的时候,会重复进行创建,当第二次创建时,就会报错Non-Unique Name specified. (Name already in use by another object).我怎么判断这个图层已经创建,并且删除他?

CMapXLayerInfo LayerInfo ; 

  CMapXFields MapFields ; 
   
  try{ 

  LayerInfo.CreateDispatch( LayerInfo.GetClsid ) ; 
  MapFields.CreateDispatch( MapFields.GetClsid ); 

  MapFields.AddIntegerField( \"C_ID\" , TRUE ) ; 
  MapFields.AddStringField( \"Name\" , 32 ) ; 

  COleVariant vFields; 
  vFields.vt = VT_DISPATCH ; 
  vFields.pdispVal = MapFields; 
  vFields.pdispVal->AddRef; 

  LayerInfo.SetType( miLayerInfoTypeNewTable ); //如果是miLayerInfoTypeTemp则为临时图层 
  LayerInfo.AddParameter(\"Filespec\" , COleVariant(\"peirenlei\") ); 
  LayerInfo.AddParameter(\"Name\" , COleVariant(\"peirenlei\") ); 
  LayerInfo.AddParameter(\"Fields\", vFields ); 
  //////////////////////////////////////////////

  m_ctrlMapX.GetLayers.Add( LayerInfo ); //////////////////////////////////////////////
  //当第二次创建时,就会报错Non-Unique Name specified. (Name already in use by another object).
  //我怎么判断这个图层已经创建,并且删除他?


  } 
  catch(COleDispatchException* e) { 
  e->ReportError; 
  e->Delete; 
  } catch(COleException* e) { 
  e->ReportError; 
  e->Delete; 
  }  



[解决办法]
不要用数字作为图层名..
判读图层是否存在我以前的方法很笨..遍历所有图层,看是否和要加的名称相同

热点排行