当前位置: 代码迷 >> GIS >> 关于mapx动态创建图层的有关问题
  详细解决方案

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

热度:201   发布时间:2016-05-05 06:31:09.0
关于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; 
  }  



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