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

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

热度:89   发布时间:2016-05-05 06:21:03.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; 
    }    


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