在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与具体的数据文件关联。
在图层集合中增加该图层。
-
MapLayer layer;
-
GeoDataset gds;
-
DataConnection m_db = new DataConnection();
-
m_db.Database = @"K:\mapobject\map\中国地图shp格式\中国地图shp格式\shp格式2\map";
-
m_db.Connect();
-
gds = m_db.FindGeoDataset("bou2_4p");
-
layer = new MapLayer();
-
layer.GeoDataset = gds;
-
axMap1.Layers.Add(layer);
增加栅格图层
增加图像文件相对简单,只要声明一个新的ImageLayer对象,利用ImageLayer对象的File属性确定对应的图像文件,再在图层集合对象中利用Add方法增加该ImageLayer对象。
-
ImageLayer iLayer = new ImageLayer();
-
iLayer.File = @"K:\mapobject\map\中国地图shp格式\中国地图shp格式\shp格式2\map\country.jpg";
-
axMap1.Layers.Add(iLayer);
Tracking层的操作
利用AddEvent方法在Tracking层中增加一个新的GeoEvent对象:
TrackingLayer.AddEvent(shape,SymbolIndex)
shape可以是点、线。多边形等图形对象,SymbolIndex是TrackingLayer符号列表中符号索引,0表示缺省符号。
-
MapObjects2.Point pt = null;
-
pt = axMap1.ToMapPoint(e.x, e.y);
-
axMap1.TrackingLayer.AddEvent(pt, 0);
阅读(842) | 评论(0) | 转发(0) |