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
本站聲明:網站內容來源于 *** ,如有侵權,請聯系我們,我們將及時處理。