在上一篇文章中我们学会了如何显示一个地图,
那么接下来我们来实现两个比较简单的功能:描点和画线。
其实这些功能的实现都是在调用MapWin GIS开源库的API函数来实现的,
只要自己仔细的阅读文档就能实现,但是一些外围的博客更有利于初学者
们的进步,所以我想继续写下去。
好了言归正传,下面我们开始啦...
我们要实现描点、画线需要三步走:
1.新建一个图层。
2.确定点的坐标,调用相应的函数(方法)画点。
先陈述一点,在窗体中添加一个控件,相当于对这个控件进行了实例化,
我们可以通过使用控件的名字来调用那些方法:例如axMap1就是咱们
控件的名字。
好了,
第一步:画一个新的图层,在这里其实可以不新画一个图层,直接
在地图上画,但是这样万一画错了想擦掉就不好办了,所以我还是
推荐在新的图层上画点的方式。
<span style="font-size:18px;">int AxMap.NewDrawing ( MapWinGIS.tkDrawReferenceList Projection )</span>
产生一个新的图层,返回图层的句柄。
参数描述:
Projection | Sets the coordinate system to use for the new drawing layer to be created. (ScreenReferenced uses pixels in screen coordinates. SpatiallyReferenced uses projected map units.) |
文档中是这样描述的,意思是为图层创建一个新的坐标系,ScreenReferenced的意思是
坐标系设定为显示器屏幕的坐标系,SpatiallyReferenced 则是使用地图的坐标系,在这
里咱们选用第二种坐标系,经纬度坐标系。
lineHandle = axMap1.NewDrawing(MapWinGIS.tkDrawReferenceList.dlSpatiallyReferencedList);
第二步:画点的时候需要给定点的坐标,当我们是在shapefile文件上
新建的图层的话,那么点的坐标就是经纬度!
下面我们来看一下画点的API,在特定图层上画点方法有两个
这一个是在最新的图层上画点
<span style="font-size:18px;">void AxMap.DrawPoint ( double x,
double y,
int pixelSize,
uint Color
)</span>
而这一个是在指定图层上画点,通过图层的句柄来确定是哪一个图层
<span style="font-size:18px;">void AxMap.DrawPointEx ( int LayerHandle,
double x,
double y,
int pixelSize,
uint Color
) </span>
参数描述:
LayerHandle: 图层的句柄,由AxMap.NewDrawing方法生成的新图层。
double x: X坐标。
double y: Y坐标。
Int pixelSize : 点的像素级的大小。
uint Color: 使用uint类型表示的颜色(具体值要通过换算RGB三通道,
请网上自行查找)。
实际中的使用:
<span style="font-size:24px;">axMap1.DrawPointEx(m_layerHandle, xVal_now, yVal_now, 5, 0);</span>