Chinaunix首页 | 论坛 | 博客
  • 博客访问: 257307
  • 博文数量: 45
  • 博客积分: 170
  • 博客等级: 入伍新兵
  • 技术积分: 488
  • 用 户 组: 普通用户
  • 注册时间: 2012-09-13 14:43
文章分类

全部博文(45)

文章存档

2014年(2)

2013年(35)

2012年(8)

我的朋友

分类: IT业界

2013-04-23 20:10:47

    在MapObjects中,地图控件是一个载体,可以在其上增加一个活多个图层。MO支持三种类型图层:矢量图层、栅格图层和动态图层,所对应的对象分别为MapLayer、ImageLayer、TrackingLayer。
    矢量图层和栅格图层分别用于显示矢量数据和栅格数据,栅格图层和动态图层的集合所对应的对象为Layers。
    动态图层用于显示动态数据,如通过GPS采集到的车辆移动中位置的数据。在TrackingLayer层显示的对象成为GeoEvent对象。
    一个地图控件只有一个TrackingLayer层。当在窗体中增加一个地图空间时,就会有一个TrankingLayer层,这时没有GeoEvent对象,GeoEvent对象的EventCount属性为0。

    增加矢量图层
   
矢量图层是和具体的数据相关联,要增加矢量图层,首先要确定对应的数据。连接的方法是利用DataConnection和GeoDataset两个对象。
    利用DataConnection对象的Database属性可以定义矢量数据所在的路径。
    利用DataConnection对象的FindGeoDataset(“文件路径”)方法可以得到指定路径下的文件,并返回GeoDataset对象。
    利用该对象的MapLayer的GeoDataset属性进行赋值,使MapLayer与具体的数据文件关联。
    在图层集合中增加该图层。
    

点击(此处)折叠或打开

  1. MapLayer layer;
  2. GeoDataset gds;
  3. DataConnection m_db = new DataConnection();
  4. m_db.Database = @"K:\mapobject\map\中国地图shp格式\中国地图shp格式\shp格式2\map";
  5. m_db.Connect();
  6. gds = m_db.FindGeoDataset("bou2_4p");
  7. layer = new MapLayer();
  8. layer.GeoDataset = gds;
  9. axMap1.Layers.Add(layer);
   

    增加栅格图层

    增加图像文件相对简单,只要声明一个新的ImageLayer对象,利用ImageLayer对象的File属性确定对应的图像文件,再在图层集合对象中利用Add方法增加该ImageLayer对象。
    

点击(此处)折叠或打开

  1. ImageLayer iLayer = new ImageLayer();
  2. iLayer.File = @"K:\mapobject\map\中国地图shp格式\中国地图shp格式\shp格式2\map\country.jpg";
  3. axMap1.Layers.Add(iLayer);

    
Tracking层的操作
   利用AddEvent方法在Tracking层中增加一个新的GeoEvent对象:
    TrackingLayer.AddEvent(shape,SymbolIndex)
    shape可以是点、线。多边形等图形对象,SymbolIndex是TrackingLayer符号列表中符号索引,0表示缺省符号。
    

点击(此处)折叠或打开

  1. MapObjects2.Point pt = null;
  2. pt = axMap1.ToMapPoint(e.x, e.y);
  3. axMap1.TrackingLayer.AddEvent(pt, 0);

阅读(842) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~