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

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

2013-01-01 
关于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; 
    }    


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

热点排行