例程参见DET中的CMapXOP类和CRoadAttrCompReplaceDlg类。

1. 创建控件

   if ( !CMapX::Create( lpszWindowName , dwStyle , rect ,pParentWnd , nID , pPersist , bStorage , bstrLicKey ) )
return FALSE;
CMapX::SetMapUnit( miUnitMeter );
CMapX::SetAreaUnit( miUnitSquareMeter );
CMapX::SetDefaultConversionResolution(100);
CMapX::SetMousewheelSupport( miFullMousewheelSupport );
CMapX::GetLayers().RemoveAll();
CMapXCoordSys cs = CMapX::GetDisplayCoordSys();
double y = cs.GetOriginLatitude();
double x = cs.GetOriginLongitude();
short s = cs.GetType();
CMapXRectangle Rect;
CMapXCoordSys CurrentCoordsys;
COptionalVariant vEmpty;
VARIANT MapUnit,MapBounds;
if(!Rect.CreateDispatch(Rect.GetClsid()))
{
TRACE0("Could not Create object");
}
if(!CurrentCoordsys.CreateDispatch(CurrentCoordsys.GetClsid()))
{
TRACE0("Could not Create object");
}
MapUnit.vt=VT_I4;
MapUnit.lVal=miUnitMeter;
//设置坐标范围(MBR).为求一致,这里取当GeosetManager中设置为non-earth(meters)时,
//gst文件中的参数"\GEOSET\MBR\LOWERLEFT" ,"\GEOSET\MBR\UPPERRIGHT"。
Rect.Set( 0,0,180,90 );
MapBounds.vt=VT_DISPATCH;
MapBounds.pdispVal=Rect.m_lpDispatch;
MapBounds.pdispVal->AddRef();
// 经纬度投影
CMapXDatum datum;
datum.CreateDispatch( datum.GetClsid() );
datum.Set( 28,0,0,0,0,0,0,0,0 );
CurrentCoordsys.Set( miLongLat, datum,MapUnit,
vEmpty, vEmpty, vEmpty,vEmpty, vEmpty,
vEmpty, vEmpty, vEmpty, vEmpty,MapBounds, vEmpty);
CMapX::SetNumericCoordSys(CurrentCoordsys.m_lpDispatch);
CMapX::SetDisplayCoordSys(CMapX::GetNumericCoordSys().m_lpDispatch);
CMapX::SetTitleText( _T("") );

2.加载图层

CMapXLayer lyrTemp = CMapX::GetLayers().Add( tcsTbFile );
    VARIANT vr;
    vr.vt = VT_DISPATCH;
    vr.pdispVal = lyrTemp;
    CMapX::GetDatasets().Add( miDataSetLayer , vr , lyrTemp.GetName() );

3.卸载图层

m_pMapXOP->GetDatasets().Remove(_T("navi_arc"));
     m_pMapXOP->GetLayers().Remove(_T("navi_arc"));

4.读取属性值

(1) 整型字段值

//cd traffic flow
       VARIANT var = rowvlus_cd.Item(_T("TrafficFlo")).GetValue();
       int iTrfcFlw = var.dblVal;

(2)字符串型字段值
       //sw direction
       VARIANT var1 = rowvlus_sw.Item(_T("Direction")).GetValue();
       string strdir = m_StringOp.ConverVariantToMBCS(var1);

5.更新属性值

(1) 获取到要更新的图层的rowvalues

CMapXRowValues rowvlus_cd = dstNavi_cd.GetRowValues(k);

(2)更新相应的字段值

rowvlus_cd.Item(_T("TrafficFlo")).SetValue( COleVariant(long(iTrfcFlw)) );
        ftr_cd.Update( true, rowvlus_cd );

6.创建新表

 //创建空字段对象
CMapXFields Flds;
if(!Flds.CreateDispatch(Flds.GetClsid()))
{
TRACE0("failed to create Flds");
return 0;
}
 //根据字段类型在空对象中加入字段
switch( fieldType )
{
case miTypeString:
{
int width = appendField.fieldWidth;
Flds.AddStringField( lpszFileName , width );
break;
}
case miTypeNumeric:
{
Flds.AddNumericField( lpszFileName , 11 , 2 );
break;
}
case miTypeDate:
{
Flds.AddDateField( lpszFileName );
break;
}
case miTypeInteger:
case miTypeSmallInt:
{
Flds.AddIntegerField( lpszFileName );
break;
}
case miTypeFloat:
{
Flds.AddFloatField( lpszFileName );
break;
}
case miTypeLogical:
{
Flds.AddLogicalField( lpszFileName );
break;
}
  CMapXLayerInfo LayerInfo;
if(!LayerInfo.CreateDispatch(LayerInfo.GetClsid()))
{
TRACE0("Failed to create LayerInfo");
return 0;
}
  LayerInfo.SetType( miLayerInfoTypeNewTable );
lpszFileName = pStringOp->ConvertMcbsToWideChar( lpBuffer );
LayerInfo.AddParameter( _T("FileSpec"),COleVariant( lpszFileName ));
lpszFileName = pStringOp->ConvertMcbsToWideChar( ptcsElemName );
LayerInfo.AddParameter(_T("Name"),COleVariant( lpszFileName ) );
  VARIANT vtFlds;
vtFlds.vt = VT_DISPATCH;
vtFlds.pdispVal = Flds.m_lpDispatch;
  LayerInfo.AddParameter(_T("Fields"),vtFlds);

  //UnloadMap();
lyr = CMapX::GetLayers().Add(LayerInfo.m_lpDispatch);
vr.pdispVal = lyr;
CMapX::GetDatasets().Add( miDataSetLayer,vr,lpszFileName ); 

7.紧缩表

(1)、将以下申明加入例子自带的MapX.h,位置在CMapXLayer类申明的Operations之Public:中即可
BOOL SupportsPack(long PackType);//sdy080520
void Pack(long PackType);//sdy080520

(2)、将以下声明加入例子自带的MapX.h的对应位置(最上边有一处是专门声明enum的,放在那个位置即可)
enum LayerPackConstants
{
               miPackGraphics = 1,
miRebuildGraphics = 2,
miPackIndex = 4,
miPackRebuildIndex = 8,
miPackData = 16,
miPackCompactDB = 32,
miPackAll = 21 //miPackGraphics & miPackIndex & miPackData;
};   //sdy080520

(3)、将以下代码加入例子自带的MapX.cpp
BOOL CMapXLayer::SupportsPack(long PackType)//sdy080520
{
BOOL result;
static BYTE parms[] =
   VTS_I4;
InvokeHelper(0x35, DISPATCH_METHOD, VT_BOOL, (void*)&result, parms,
   PackType);
return result;
}
void CMapXLayer::Pack(long PackType)//sdy080520
{
static BYTE parms[] =
   VTS_I4;
InvokeHelper(0x36, DISPATCH_METHOD, VT_EMPTY, NULL, parms,
   PackType);
}

(4)、使用方式
CMapXLayer layer = m_ctrlMapX.GetLayers().Item(index);
layer.Pack(miPackAll);

MapX常用功能代码逻辑相关推荐

  1. ASP.NET中常用功能代码总结(3)——上传图片到数据库

    ASP.NET中常用功能代码总结(3)--上传图片到数据库<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:offi ...

  2. ASP.NET中常用功能代码总结(1)——发送邮件篇

    ASP.NET中常用功能代码总结(1)--发送邮件篇<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office: ...

  3. Wordpress模板主题中functions.php常用功能代码与常用插件[ 后台篇](持续收集整理)

    用Wordpress建站的初学者一定会需要用到的Wordpress模板主题中functions.php常用功能代码与常用插件.慢慢持续收集整理....... 目录 一.Wordpress模板主题中fu ...

  4. java poi 常用功能代码

    java poi 常用功能代码(适用于XSSFWorkbook:Excel2007后的版本,扩展名是.xlsx) Excel验证公式 =AND(H8>0,OR(H8=INT(H8),LEN(H8 ...

  5. DirectDraw 常用功能代码记录

    记录一些常用的代码功能段便于自己以后查找使用: 1.常用宏和函数 #define SafeRelease(lpx) if(lpx!=NULL){lpx->Release();lpx=NULL;} ...

  6. WPS excel VBA 常用功能代码

    VBA中单元格位移方法,解释: submy_offset (0,1).Select'当前单元格向左移动一格 (0,-1).Select'当前单元格向右移动一格 (1,0).Select'当前单元格向下 ...

  7. 美狐美颜SDK最常用功能代码解析

    当下,平台方接入美颜工具包甚至已经成为刚需,没有美颜SDK甚至都会极大程度影响到用户体验,对于主播则更为重要,这甚至会影响到平台的发展.如今,直播美颜工具在广大直播平台中时时刻刻发挥着重要的作用.那么 ...

  8. DatagridView 常用功能代码

    文章是飞鸽传书转载的,版权归原作者所有,作者是:liguangxi8 1.DatagridView自动编号 代码  private void dataGridView1_RowPostPaint(ob ...

  9. ASP.NET中常用功能代码总结(5)——文件操作篇

    一.读取文本文件<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /> ...

最新文章

  1. Datawhale厦门大学分享记录!
  2. 设计模式快速学习(六)模板模式
  3. JavaWeb-网站在线用户信息、网站访问量以及管理踢出用户实例
  4. cv2.circle函数
  5. pytorch 之 torch.bmm()函数
  6. jit 和 jvm_关于JVM和JIT的一点点
  7. oracle报28003,【翻译自mos文章】运行utlpwdmg.sql之后报ORA-28003, ORA-20001, ORA-20002, ORA-20003, ORA-20004 错误...
  8. stm32编码器正反转计数程序_第六章:STM32CubeMx 定时器编码器模式基本使用方法...
  9. oracle concat函数用法_大白的函数笔记:文本合并就是这么简单,不会的快来学...
  10. MAC上使用不同版本的xcode编译
  11. setTimeout 方法用于在指定的毫秒数后调用函数或计算表达式
  12. win7与internet时间同步出错_如何解决Win7时间同步出错的问题
  13. 主机服务器信息控制台,服务器的监控控制台
  14. 多少人败给了一个字:等 ! 宋丹丹、梁静茹、张国荣。。。
  15. 网页优化(布局优化、图片优化)
  16. 2018腾讯游戏客户端岗位暑期实习生面试
  17. 给你一个app如何测试?面试题
  18. 建筑施工技术【15】
  19. 第二课 IDEA 的使用
  20. 录音软件哪个好用?录音软件免费下载安装

热门文章

  1. 梯度科技通过可信云认证 容器解决方案获权威认可
  2. C# for循环与foreach循环
  3. ws协议 服务器,Node.js WebSocket 协议
  4. 改图片分辨率:提升图像质量的关键步骤
  5. JavaSE进阶:IO流
  6. 揭开苹果供应链,如何将其命运与中国深度捆绑
  7. MySQL数据库——查询
  8. ICG-PEG-CHO,吲哚菁绿-聚乙二醇-醛基 荧光染料试剂说明
  9. fable樱桃php频道,【爵士乐利器】Fable Sounds Broadway Big Band v1.3 97.7G
  10. 谭宁计算机组装与维护,(毕业学术论文设计)-家庭电脑组装方案的设计与分析.doc...