控件介绍:
MapWinGis 是一个GIS开源库,它被做成了ActiveX
控件的形式,从而可以使用在.net平台上。
需求分析:
从一个运动的设备上可以获得运动前的经纬度和运动
后的经纬度,我们需要的做的是根据这两组经纬度来
画出一条线段,表示运动设备的直线轨迹。
现有条件:
已经使用MapWinGis控件读取了某一个区域的shapefile
文件(这个文件包含着经纬度信息)。
为了解决这个问题,我们采用MapWinGis开源库中的方法
void AxMap.DrawLineEx ( int LayerHandle,
<span style="white-space:pre"> </span>double x1,
<span style="white-space:pre"> </span>double y1,
<span style="white-space:pre"> </span>double x2,
<span style="white-space:pre"> </span>double y2,
<span style="white-space:pre"> </span>int pixelWidth,
<span style="white-space:pre"> </span>uint Color
)
方法介绍:
Draws a line on the specified drawing layer.
在一个特定的图层上画一条直线。
参数:
LayerHandle: 图层的句柄,由AxMap.NewDrawing方法生成的图层。
x1: 第一个点的X坐标。
y1: 第一个点的Y坐标。
x2: 第二个点的X坐标。
y2: 第二个点的Y坐标。
pixelWidth: 所画线的宽度的像素值。
Color:所画线的颜色,这个颜色是用无符号整数来表示的RGB值。
看完这个方法的介绍,我们大体知道了应该怎么实现了吧:
一:新生成一个图层,用来画线。
m_layerHandle = axMap1.NewDrawing(MapWinGIS.tkDrawReferenceList.dlSpatiallyReferencedList);
来表示。这里要主要的是新的图层的坐标系要选择基于经纬度的空间坐标系:
MapWinGIS.tkDrawReferenceList.dlSpatiallyReferencedList.
二:根据获得的参数(两个点经纬度),调用DrawLineEx方法。
下面是程序结果的截图(紫色的线):