您的位置:首页 > 其它

使用MapWinGis ActiveX控件在图层上画点

2015-01-18 22:23 567 查看
在上一篇文章中我们学会了如何显示一个地图,

那么接下来我们来实现两个比较简单的功能:描点和画线。

其实这些功能的实现都是在调用MapWin GIS开源库的API函数来实现的,

只要自己仔细的阅读文档就能实现,但是一些外围的博客更有利于初学者

们的进步,所以我想继续写下去。

好了言归正传,下面我们开始啦...

我们要实现描点、画线需要三步走:

          1.新建一个图层。

          2.确定点的坐标,调用相应的函数(方法)画点。

先陈述一点,在窗体中添加一个控件,相当于对这个控件进行了实例化,

我们可以通过使用控件的名字来调用那些方法:例如axMap1就是咱们

控件的名字。

好了,

第一步:画一个新的图层,在这里其实可以不新画一个图层,直接

在地图上画,但是这样万一画错了想擦掉就不好办了,所以我还是

推荐在新的图层上画点的方式。

<span style="font-size:18px;">int AxMap.NewDrawing	(	MapWinGIS.tkDrawReferenceList 	Projection	)</span>

产生一个新的图层,返回图层的句柄。

参数描述:

ProjectionSets 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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Gis 地图 mapwingis