MapObject控件的使用之符号绘制
作者 北京 张松伟
在MO当中,可以在图层上自己画一些特定的符号,以标识特殊的点。比如:各地方的地图,上面标识了一些大厦、地铁、学校等,这些标识我们可以用MO的TrackingLayer来实现。
首先在你的视图类的中加入成员变量:CMoTrackingLayer m_tLayer;
然后,每个地图图层都包函TrackingLayer,你要得到它们,就像这样:
m_tLayer = m_map.GetTrackingLayer();
好了,下面就要开始往地图上加标识点了。MO的点表示方法,我在前面已经提过了,下面你要创建一些点,并转换成地图坐标,并用CmoTrackingLayer类的AddEvent()方法把它们画到MO的地图中。
for(int i=0; i<m_Point.GetSize(); i++)
{
CMoPoint mapPt(m_map.ToMapPoint(m_Point.GetAt(i), m_Point.GetAt(i)));
m_tLayer = m_map.GetTrackingLayer();
m_tLayer.AddEvent(mapPt, 0);
}
好了运行,已经在你的图上显视了很多矩形的点。
有的人可能要问,AddEvent()方法的第二个参数是做什么的呢?好,我正要说这个问题。
在MO中,每个点都有它的样式,我们称为Symbo Style。你可以自己设置它的个数,样式,大小,颜色等。
m_tLayer.SetSymbolCount(3); //设置Symbo的个数为3个。
下面就可以对这3个Symbo进行设置了。
m_tLayer.GetSymbol(0).SetSymbolType(moPointSymbol);
m_tLayer.GetSymbol(0).SetStyle(moCircleMarker);
m_tLayer.GetSymbol(0).SetColor(RGB(255,240,255));
m_tLayer.GetSymbol(0).SetSize(6);
m_tLayer.GetSymbol(1).SetSymbolType(moPointSymbol);
m_tLayer.GetSymbol(1).SetStyle(moSquareMarker);
m_tLayer.GetSymbol(1).SetColor(RGB(255,240,255));
m_tLayer.GetSymbol(1).SetSize(6);
m_tLayer.GetSymbol(2).SetSymbolType(moPointSymbol);
m_tLayer.GetSymbol(2).SetStyle(moTriangleMarker);
m_tLayer.GetSymbol(2).SetColor(RGB(255,240,255));
m_tLayer.GetSymbol(2).SetSize(6);
相关样式我会在后面给出,或查看MO的帮助。刚才我们只是加了很多点,TrackingLayer的功能可不只这些。它可以加一些圆、矩形、多边形等等。这些可以通过设置Symbo的样式表示出来。
Symbo的相关类型:
moFillSymbol、moLineSymbol、moPointSymbol 分别为多边形、线、点。
Symbo的各种样式:
点:
moCircleMarker 0 Circle
moSquareMarker 1 Square
moTriangleMarker 2 Triangle
moCrossMarker 3 Cross
moTrueTypeMarker 4 TrueType
线:
moSolidLine 0 Solid line
moDashLine 1 Dash line
moDotLine 2 Dot line
moDashDotLine 3 Dash Dot line
moDashDotDotLine 4 Dash Dot Dot line
多边形:
moSolidFill 0 Solid
moTransparentFill 1 Transparent
moHorizontalFill 2 Horizontal
moVerticalFill 3 Vertical
moUpwardDiagonalFill 4 Upward Diagonal
moDownwardDiagonalFill 5 Downward Diagonal
moCrossFill 6 Cross
moDiagonalCrossFill 7 Diagonal Cross
moLightGrayFill 8 Light Gray Fill
moGrayFill 9 Gray Fill
moDarkGrayFill 10 DarkGray Fill
此外你还可以自定义Symbo类型。
TrakcingLayer的颜色列表:
moBlack 0x0 Black
moRed 0xFF Red
moGreen 0xFF00 Green
moBlue 0xFF0000 Blue
moMagenta 0xFF00FF Magenta
moCyan 0xFFFF00 Cyan
moWhite 0xFFFFFF White
moLightGray 12632256 LightGray
moDarkGray 4210752 DarkGray
moGray 8421504 Gray
moPaleYellow 13697023 Pale Yellow
moLightYellow 8454143 Light Yellow
moYellow 65535 Yellow
moLimeGreen 12639424 Lime Green
moTeal 8421440 Teal
moDarkGreen 16384 Dark Green
moMaroon 128 Maroon
moPurple 8388736 Purple
moOrange 33023 Orange
moKhaki 7051175 Khaki
moOlive 32896 Olive
moBrown 4210816
Brown
moNavy 8404992 Navy
好了,检验一下你的成果吧。在下一次我将介绍如何用程序新建图层,下次见吧。