接下來我們來添加線要素,其實畫點畫線的方法有好多種,這里我就介紹一種,不多說了,我們來看代碼:
``#include "mainwindow.h"
include "ui_mainwindow.h"
include <qgsmapcanvas.h>
include <qgsvectorlayer.h>
include
include <qgssymbol.h>
include <qgssymbollayer.h>
include <qgsvectordataprovider.h>
- MainWindow::MainWindow(QWidget *parent)
- QMainWindow(parent)
{
//老規矩我們來創建畫布
QgsMapCanvas *canvas = new QgsMapCanvas(this);
//添加一個背景矢量圖層
QString path = "D:/Qt/bbb.shp";
QgsVectorLayer *layer = new QgsVectorLayer(path,"MyPoint","ogr");
//在這里缺少一步<創建鏈表>,我把QList<QgsMapLayer *>Layers設置成全局變量
//這個是線要素的添加方法,我們跳進函數來看一下
AddLine();
//將矢量層追加到鏈表中
Layers.append(layer);
//設置畫布縮放
canvas->setLayers(layers);
canvas->zoomToFullExtent();
//設置畫布背景顏色,當然這個可以根據你自己的需求來設定
canvas->setCanvasColor(QColor(124,134,205));
//設置畫布為當前中心窗口
this->setCentralWidget(canvas);
}
MainWindow::~MainWindow()
{
}void MainWindow::AddLine()
{
// 創建一個線圖層。
QgsVectorLayer *Line_Layer = new QgsVectorLayer("LineString?crs=epsg:4326","MyLine","memory");
QgsVectorDataProvider *dataProder =Line_Layer->dataProvider();
//在指定坐標添加點
QgsFeature feature;
QgsGeometry geometry = QgsGeometry::fromPointXY(QgsPointXY(50,50));
//通過點坐標進行畫線
QgsPolyline line ;
line << QgsPoint(100.4443,32.2123) << QgsPoint(130.5557,50.4445);
geometry =QgsGeometry::fromPolyline(line);
feature.setGeometry( geometry );
dataProder->addFeatures(QgsFeatureList()<< feature);
Line_Layer->updateExtents();
//將線圖層加載到鏈表中
layers.append(Line_Layer);
}``
實現如下圖:
如果有什么問題,大家可以來探討,本人QQ895996365