1.概述
地图交互工具作为GUI交互的主要手段,在GIS占用重要地位。
GIS交互工具主要是使用鼠标进行地图操作,维护不同的鼠标状态。
主要的地图工作有pan,zoomIn/zoomOut,identify等。
2.原理
交互工具要有明确的作用对象(主窗口),并且有一个action与之对应,用于切换状态。
微信号:MeetyXiao
添加微信好友, 获取更多信息
复制微信号
添加微信好友, 获取更多信息
复制微信号
主窗口设置当前工具时,可以激活当前的工具,进行操作。
3.使用 ***
Qgs主要开发库中只包含pan,zoom,identify三个基本工具。其它工具在app库中。
对于Pan和Zoom工具的使用,可以直接使用canvas生成对象,设定为当前工具就可以使用了。
对于Identify等相对来说比较复杂的工具就需要进行一些定制开发了。相对于Arcgis来说,开发量大了一点,但好处是QgisApp中具有完整的源码,可以更好的理解其工作原理,而且在QgisApp中可以调试,难度较Arcgis应该不能算高。
(1)Pan和Zoom
//addmaptool QgsMapTool*pPanTool=newQgsMapToolPan(pMapCanvas);//setconnectcanvas pPanTool->setAction(ui->actionPan);//adddisplayaction QgsMapToolZoom*pZoomOutTool=newQgsMapToolZoom(pMapCanvas,true);//setconnectcanvas pPanTool->setAction(ui->actionZoomOut);//adddisplayaction QgsMapToolZoom*pZoomInTool=newQgsMapToolZoom(pMapCanvas,false);//setconnectcanvas pPanTool->setAction(ui->actionZoomIn);//adddisplayaction m_pPanTool =pPanTool; m_pZoomOutTool=pZoomOutTool; m_pZoomInTool=pZoomInTool; createActions(); m_pMapCanvas->setMapTool(m_pPanTool);//initializemapcanvastool voidMainWindow::createActions(void) { connect(ui->actionPan,SIGNAL(triggered()),this,SLOT(pan())); connect(ui->actionZoomOut,SIGNAL(triggered()),this,SLOT(zoomOut())); connect(ui->actionZoomIn,SIGNAL(triggered()),this,SLOT(zoomIn())); connect(ui->actionSelect,SIGNAL(triggered()),this,SLOT(select())); } voidMainWindow::pan() { m_pMapCanvas->setMapTool(m_pPanTool); } voidMainWindow::zoomOut() { m_pMapCanvas->setMapTool(m_pZoomOutTool); } voidMainWindow::zoomIn() { m_pMapCanvas->setMapTool(m_pZoomInTool); }
(2)Select
(3)Identify
来源:开源地理空间基金会中文分会
来源链接:https://www.osgeo.cn/post/3816g
本站声明:网站内容来源于 *** ,如有侵权,请联系我们,我们将及时处理。