Qgis开发-自定义地图工具
sf2gis@163.com
2014年8月28日
1 概述
在使用地图时,可能需要添加一些自定义的工具,包含添加一些对工具显示方式,处理方式的定制等。
2 原理
地图工具的处理主要是处理鼠标交互事件,对鼠标操作的顺序、方式等相互配合。因此,地图工具就是各种处理函数的集合。
一般使用一个基类,默认处理所有的事件,每个工具根据自身需要重写相关的事件,从而完成工具的定制。
3 使用方法
所有地图工具QgsMapTool派生。
当需要自定义工具时,派生此类,重写相关事件处理函数就可以了。
3.1 select工具
select工具的主要作用就是选中图层中的一个元素,然后高亮显示。
方法就是根据鼠标点击位置(mousepress)获取相应的点坐标,然后转换为地理坐标,按照一定宽高生成一个搜索矩形(也可生成任意形状),在目标图层中搜索图形(可以有很多种搜索方式),将搜索结果选中并高亮显示。
3.1.1示例
//xx.cpp
/**
*@briefQgsMapToolSelect::canvasReleaseEvent
*
*canvasreleaseeventhandler.
*@parame
*@authorsf2gis@163.com
*@date2014-08-2818:05:51
*/
voidQgsMapToolSelect::canvasReleaseEvent(QMouseEvent*e)
{
QgsVectorLayer*vlayer=qobject_cast<QgsVectorLayer*>(mCanvas->currentLayer());
//createsearchgeometry
</