网站主页 新闻动态 产品介绍 软件下载 教学视频 资源中心 技术支持 产品销售 单位简介
 
欢迎光临本站!
今天是2024年4月29日星期一农历三月廿一
 
 
 
MapObject控件使用之图层制作
 

 
 
  作者:张松伟
zswking@163.com

有些时候将一些固定的数据制作成图层,可以提高程序的速度,而且使用方便。下面我就将对图层的制作方法进行一下简单的说明。
假设我们要将一些经纬度坐标用点的方式画在地图上,那么我们首先要有保存经纬度坐标的数组:m_LonArray, m_LatArray,均为CArray型。然后我们在CMyView中增加一些成员变量:
       CmoDataConnection pMoCon; 
       CMoTableDesc  desc;
       CMoMapLayer layer;
       CMoPoint m_point;
好了,是为创建新图层增加一个函数的时候了,在视图类中增加函数:CreateNewLayer()。
BOOL CMyView:: CreateNewLayer()
{
     if (!pMoCon.CreateDispatch(TEXT("MapObjects2.DataConnection")))
          return FALSE;
     if(!desc.CreateDispatch("MapObjects2.TableDesc"))
          return FALSE;
     VARIANT vt;
     vt.vt = VT_BOOL;
     vt.boolVal = VARIANT_FALSE;
     pMoCon.SetDatabase((LPCTSTR)"E:\\Demo\\经纬度层");    //设置图层保存目录
     if(!pMoCon.Connect())
          return FALSE;
     //设置图层的字段个数及属性,这里设置两个,一个为Number,一个为Name。表示点的号码及名称。
     desc.SetFieldCount(2);
     desc.SetFieldType(0,moString);
     desc.SetFieldName(0,"Number");
     desc.SetFieldLength(0,10);
     desc.SetFieldType(1,moString);
     desc.SetFieldName(1, "Name");
     desc.SetFieldLength(1, 10);
    //创建新图层,设置名称、类型及字段。
     CmoGeoDataSet geoDataset(pMoCon.AddGeoDataset(“经纬度层”, moShapeTypePoint,
         (LPDISPATCH)desc, vt, vt));
     if (!layer.CreateDispatch(TEXT("MapObjects2.MapLayer")))
          return FALSE;
     //设置图层的记录集
     layer.SetGeoDataset(geoDataset);         
     CMoRecordset recs(layer.GetRecords());
     CMoFields fields(recs.GetFields());
     for(int i=0; i     {
         recs.AddNew();
         m_point.SetX(m_ LonArray.GetAt(i));
         m_point.SetY(m_ LatArray.GetAt(i));
         SetValue(fields, "Shape",m_point);
         SetValue(fields, "Number",m_Number.GetAt(i));//需定义CStringArray m_Number
         SetValue(fields, "Name", m_Name.GetAt(i));//需定义CStrignArray m_Name
         recs.Update();
     }
     //设置点的颜色,并加入地图。
     layer.GetSymbol().SetColor(moLightYellow);
     CMoLayers layers(m_map.GetLayers());
     layers.Add(layer);
return TRUE;
}
好了,调用一下试试效果吧。
本人水平用限,欢迎大家批评指正。
 
     
 

您是第 2107705 位来宾  官方QQ群:916871934  电话:0731-84186551
网站指南 | 欢迎合作 | 刊登广告 | 人才引进 |  网站管理 |  会员退出
Copyright 2018 版权所有,All Rights Reserved,Tel:0731-84186551
长沙市规划勘测设计研究院 湘ICP备10002110号