设为首页 加入收藏

TOP

7.7.3 地图放大、缩小的实现(1)
2013-10-07 14:54:27 来源: 作者: 【 】 浏览:62
Tags:7.7.3 地图 放大 缩小 实现

7.7.3  地图放大、缩小的实现(1)

首先介绍MapObjects的使用方法。使用MapObjects同其他的ActiveX控件没有什么两样,先安装MapObjects控件。安装成功后MapObjects就已经注册成功了。MapObjects的安装包在本书附带的光盘中会提供给读者。

选择【Project】|【Add To Project】|【Components and Controls...】命令,打开【Components and Controls Gallery】对话框。从其【Registered ActiveX Controls】文件夹下的已登记控件列表中选择【MapObjects 2.3 Map Control】选项,然后单击【Insert】按钮,系统将生成该控件及其自动化对象的一系列包裹类(Wrapper Class)。这样在控制条中会增加一个地图控件图标,把该图标插入到所应用的窗口中就可以了。可以在相应的头文件中创建该类型的对象,利用它就可以操作地图了。

当然,还要添加矢量的图层数据,添加适量数据需要用到CMap、CMoDataConnection、CMoLayers、CMoMapLayer和CMoGeoDataset这5个对象。5个对象间的关系如图7-27所示。

 
图7-27  对象间的关系

创建数据的连接,可以定义CMoDataConnection类的一个对象conn,通过conn.CreateDispatch("MapObjects2.DataConnection")函数来进行身份的匹配,而且需要设置连接的目录,conn.SetDatabase(path)函数的path参数代表了目录的路径。调用conn.Connect()函数对数据库进行连接。创建好数据库连接对象后,连接相应的矢量数据集,具体步骤如下。

获得Map控件对应的要素层集合对象(CmoLayers)。

  1. CMoLayers layers=m_map.Getlayers(); 

然后创建矢量数据层对象(CmomapLayer)的对象,并对所创建的矢量数据层对象进行身份匹配;
  1. CMoMapLayer layer;  
  2. if(!layer.CreateDisatch("MapObjects2.MapLayer"))  
  3. return "";  

创建一个空间数据集对象。

  1. CString LayerName=FileName;FileName表示数据的名称  
  2. CmoGeoDataset GeoDataset=conn.FindGeoDataset(LayerName);  
  3. if(!GeoDataset)  
  4. return "";  

把矢量数据与空间数据集对象进行连接,即给矢量数据层挂上相应的空间数据集。
  1. Layer.SetGeoDataset(GeoDataset); 

对新添加的矢量数据进行符号化。
  1. CMoSymbol layerSymbol(layer.GetSymbol())  
  2. If(color!=-1)  
  3. layerSynbol.SetColor(color);  
  4. layerSymbol.SetSize(symbolSize);  
  5. layerSymbol.Setstyle(symbolStyle);  

向要素层集合中添加矢量数据。
  1. Layers.Add(layer); 

】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇7.7.3 地图放大、缩小的实现(2) 下一篇7.7.2 地图信息模块技术分析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: