1.概述
地圖交互工具作為GUI交互的主要手段,在GIS占用重要地位。
GIS交互工具主要是使用鼠標(biāo)進(jìn)行地圖操作,維護(hù)不同的鼠標(biāo)狀態(tài)。
主要的地圖工作有pan,zoomIn/zoomOut,identify等。
2.原理
交互工具要有明確的作用對象(主窗口),并且有一個action與之對應(yīng),用于切換狀態(tài)。
添加微信好友, 獲取更多信息
復(fù)制微信號
主窗口設(shè)置當(dāng)前工具時,可以激活當(dāng)前的工具,進(jìn)行操作。
3.使用 ***
Qgs主要開發(fā)庫中只包含pan,zoom,identify三個基本工具。其它工具在app庫中。
對于Pan和Zoom工具的使用,可以直接使用canvas生成對象,設(shè)定為當(dāng)前工具就可以使用了。
對于Identify等相對來說比較復(fù)雜的工具就需要進(jìn)行一些定制開發(fā)了。相對于Arcgis來說,開發(fā)量大了一點,但好處是QgisApp中具有完整的源碼,可以更好的理解其工作原理,而且在QgisApp中可以調(diào)試,難度較Arcgis應(yīng)該不能算高。
(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
本站聲明:網(wǎng)站內(nèi)容來源于 *** ,如有侵權(quán),請聯(lián)系我們,我們將及時處理。