Merge pull request 'RFPC-dev:发布最新版本' (#14) from RFPC-dev into Release

Reviewed-on: http://123.153.4.249:22779/LAMPSARToolSoftware/RasterProcessTool/pulls/14
Release
chenzenghui 2025-04-29 11:52:50 +08:00
commit ab654ed02b
20 changed files with 1460 additions and 1380 deletions

View File

@ -20,19 +20,9 @@
namespace LAMPMainWidget { namespace LAMPMainWidget {
QString QHash<QString, MapLayer*>RasterMainWidget::mMaps{};
RasterMainWidget::tutorialUrl() {
return QString{R"(https://gitee.com/qizr_admin/LAMPMainWidget)"};
}
QString RasterMainWidget::RasterMainWidget(QWidget* parent)
RasterMainWidget::srcUrl() {
return QString{R"(https://gitee.com/qizr_admin/LAMPMainWidget)"};
}
QHash<QString, MapLayer *>RasterMainWidget::mMaps{};
RasterMainWidget::RasterMainWidget(QWidget *parent)
: mUi(new Ui::RasterMainWidget), : mUi(new Ui::RasterMainWidget),
mMapConvas(new MapCanvas), mMapConvas(new MapCanvas),
mScaleText(new QLineEdit), mScaleText(new QLineEdit),
@ -41,7 +31,7 @@ RasterMainWidget::RasterMainWidget(QWidget *parent)
mCenterLabel(new QLabel), mCenterLabel(new QLabel),
mZoomText(new QLineEdit), mZoomText(new QLineEdit),
mZoomLabel(new QLabel), mZoomLabel(new QLabel),
mMapActionGroup(new QActionGroup(dynamic_cast<QObject *>(this))), mMapActionGroup(new QActionGroup(dynamic_cast<QObject*>(this))),
mSetLeftTop(true), mSetLeftTop(true),
mLayerList(), mLayerList(),
mLeftTop(), mLeftTop(),
@ -55,34 +45,46 @@ RasterMainWidget::RasterMainWidget(QWidget *parent)
setupActions(); setupActions();
setRightToolbox(); setRightToolbox();
//mUi->panAction->trigger(); mUi->panAction->trigger();
//mUi->layerList->setCurrentItem(mLayerList.first()); mUi->layerList->setCurrentItem(mLayerList.first());
this->show();// 强制显示窗口
// 绑定消息显示
RasterMessageShow::RasterWidgetMessageShow* messageshow = RasterMessageShow::RasterWidgetMessageShow::getInstance(this);
messageshow->bandingTextBrowserMessage(this->mUi->textBrowserMessage);
connect(mUi->actioncloseAllRasterFile, SIGNAL(triggered()), this, SLOT(onactioncloseAllRasterFile_triggered())); connect(mUi->actioncloseAllRasterFile, SIGNAL(triggered()), this, SLOT(onactioncloseAllRasterFile_triggered()));
} this->mUi->toolBar->hide();
this->mUi->dockWidget_Map->hide();
this->mUi->dockWidget->hide();
this->mUi->statusbar->hide();
this->mUi->dockWidget_2->hide();
this->mUi->dockWidget_3->hide();
RasterMainWidget::~RasterMainWidget() { }
RasterMainWidget::~RasterMainWidget() {
delete mUi; delete mUi;
delete mMapConvas; delete mMapConvas;
delete mScaleText; delete mScaleText;
delete mScaleLabel; delete mScaleLabel;
delete mCenterText; delete mCenterText;
delete mCenterLabel; delete mCenterLabel;
} }
void void
RasterMainWidget::setupTaskWindow() { RasterMainWidget::setupTaskWindow() {
mUi->taskTable->setColumnCount(5); mUi->taskTable->setColumnCount(5);
mUi->taskTable->setHorizontalHeaderLabels(QStringList{ mUi->taskTable->setHorizontalHeaderLabels(QStringList{
"名称", "范围", "zoom值", "数据源", "进度" "名称", "范围", "zoom值", "数据源", "进度"
}); });
mUi->taskTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch); mUi->taskTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
} }
void void
RasterMainWidget::setupActions() { RasterMainWidget::setupActions() {
mMapActionGroup->addAction(mUi->panAction); mMapActionGroup->addAction(mUi->panAction);
mMapActionGroup->addAction(mUi->zoomInAction); mMapActionGroup->addAction(mUi->zoomInAction);
mMapActionGroup->addAction(mUi->zoomOutAction); mMapActionGroup->addAction(mUi->zoomOutAction);
@ -93,16 +95,15 @@ RasterMainWidget::setupActions() {
QObject::connect(mUi->panAction, &QAction::triggered, this, &RasterMainWidget::panHandle); QObject::connect(mUi->panAction, &QAction::triggered, this, &RasterMainWidget::panHandle);
QObject::connect(mUi->zoomInAction, &QAction::triggered, this, &RasterMainWidget::zoomInHandle); QObject::connect(mUi->zoomInAction, &QAction::triggered, this, &RasterMainWidget::zoomInHandle);
QObject::connect(mUi->zoomOutAction, &QAction::triggered, this, &RasterMainWidget::zoomOutHandle); QObject::connect(mUi->zoomOutAction, &QAction::triggered, this, &RasterMainWidget::zoomOutHandle);
QObject::connect(mUi->tutorialAction, &QAction::triggered, this, &RasterMainWidget::tutorialHanle);
QObject::connect(mUi->srcAction, &QAction::triggered, this, &RasterMainWidget::srcHandle);
QObject::connect(mUi->refreshAction, &QAction::triggered, this, &RasterMainWidget::refreshHandle); QObject::connect(mUi->refreshAction, &QAction::triggered, this, &RasterMainWidget::refreshHandle);
QObject::connect(mUi->sponsorAction, &QAction::triggered, this, &RasterMainWidget::sponsorHandle); QObject::connect(mUi->sponsorAction, &QAction::triggered, this, &RasterMainWidget::sponsorHandle);
QObject::connect(mUi->selectAction, &QAction::triggered, this, &RasterMainWidget::selectHandle); QObject::connect(mUi->selectAction, &QAction::triggered, this, &RasterMainWidget::selectHandle);
QObject::connect(mUi->downloadAction, &QAction::triggered, this, &RasterMainWidget::createDownloadTask); QObject::connect(mUi->downloadAction, &QAction::triggered, this, &RasterMainWidget::createDownloadTask);
QObject::connect(mUi->drawlineAction, &QAction::triggered, this, &RasterMainWidget::drawlineHandle); QObject::connect(mUi->drawlineAction, &QAction::triggered, this, &RasterMainWidget::drawlineHandle);
} }
void RasterMainWidget::setupWindow() { void RasterMainWidget::setupWindow() {
mUi->mapCanvasLayout->addWidget(mMapConvas); mUi->mapCanvasLayout->addWidget(mMapConvas);
//setFixedSize(size()); //setFixedSize(size());
//setWindowFlags(windowFlags() | Qt::WindowMinMaxButtonsHint | Qt::WindowSystemMenuHint); //setWindowFlags(windowFlags() | Qt::WindowMinMaxButtonsHint | Qt::WindowSystemMenuHint);
@ -113,15 +114,9 @@ void RasterMainWidget::setupWindow() {
QObject::connect(mUi->layerList, &QListWidget::currentItemChanged, this, &RasterMainWidget::layerChanged); QObject::connect(mUi->layerList, &QListWidget::currentItemChanged, this, &RasterMainWidget::layerChanged);
QObject::connect(mUi->leftTopBtn, &QPushButton::clicked, this, &RasterMainWidget::leftTopClickedHandle); QObject::connect(mUi->leftTopBtn, &QPushButton::clicked, this, &RasterMainWidget::leftTopClickedHandle);
QObject::connect(mUi->rightBottomBtn, &QPushButton::clicked, this, &RasterMainWidget::rightBottomClickedHandle); QObject::connect(mUi->rightBottomBtn, &QPushButton::clicked, this, &RasterMainWidget::rightBottomClickedHandle);
}
void RasterMainWidget::setupStatusBar() {
RasterMessageShow::RasterWidgetMessageShow* messageshow = RasterMessageShow::RasterWidgetMessageShow::getInstance(this);
messageshow->bandingTextBrowserMessage(this->mUi->textBrowserMessage);
}
void RasterMainWidget::setupStatusBar() {
/// 比例尺 /// 比例尺
mScaleLabel->setText("比例尺"); mScaleLabel->setText("比例尺");
mScaleText->setText(QString("1cm : %1m").arg(mMapConvas->scale())); mScaleText->setText(QString("1cm : %1m").arg(mMapConvas->scale()));
@ -152,28 +147,28 @@ void RasterMainWidget::setupStatusBar() {
mCenterText->setReadOnly(true); mCenterText->setReadOnly(true);
mUi->statusbar->addWidget(mCenterLabel); mUi->statusbar->addWidget(mCenterLabel);
mUi->statusbar->addWidget(mCenterText); mUi->statusbar->addWidget(mCenterText);
} }
void RasterMainWidget::setupLayers() { void RasterMainWidget::setupLayers() {
initMaps(); initMaps();
auto i = mMaps.constBegin(); auto i = mMaps.constBegin();
for (; i != mMaps.constEnd(); ++i) { for (; i != mMaps.constEnd(); ++i) {
mLayerList.append(new QListWidgetItem(i.key(), mUi->layerList)); mLayerList.append(new QListWidgetItem(i.key(), mUi->layerList));
} }
} }
void void
RasterMainWidget::initMaps() { RasterMainWidget::initMaps() {
if (mMaps.isEmpty()) { if (false&&mMaps.isEmpty()) {
mMaps = QHash<QString, MapLayer *>{ mMaps = QHash<QString, MapLayer*>{
{"Openstreet地图", new TmsLayer(OSTNormalMap, "ostnormalmap", mMapConvas)}, {"Openstreet地图", new TmsLayer(OSTNormalMap, "ostnormalmap", mMapConvas)},
{"高德地图", new TmsLayer(GaodeNormapMap, "gaodenormalmap", mMapConvas)} {"高德地图", new TmsLayer(GaodeNormapMap, "gaodenormalmap", mMapConvas)}
}; };
} }
} }
void RasterMainWidget::setRightToolbox() void RasterMainWidget::setRightToolbox()
{ {
this->toolboxDockWidget = new QDockWidget(tr(u8"工具箱"), this); this->toolboxDockWidget = new QDockWidget(tr(u8"工具箱"), this);
toolboxDockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea); toolboxDockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
toolBoxWidget = new ToolBoxWidget(this); toolBoxWidget = new ToolBoxWidget(this);
@ -181,115 +176,104 @@ void RasterMainWidget::setRightToolbox()
addDockWidget(Qt::LeftDockWidgetArea, toolboxDockWidget); addDockWidget(Qt::LeftDockWidgetArea, toolboxDockWidget);
setDockOptions(QMainWindow::AllowNestedDocks | QMainWindow::AllowTabbedDocks); setDockOptions(QMainWindow::AllowNestedDocks | QMainWindow::AllowTabbedDocks);
this->initToolbox(); this->initToolbox();
} }
void RasterMainWidget::initToolbox() void RasterMainWidget::initToolbox()
{ {
QString appPath = QCoreApplication::applicationDirPath(); QString appPath = QCoreApplication::applicationDirPath();
QString pluginPath = JoinPath(appPath, "Toolbox"); QString pluginPath = JoinPath(appPath, "Toolbox");
toolBoxWidget->initToolbox(pluginPath); toolBoxWidget->initToolbox(pluginPath);
} }
QWidget *RasterMainWidget::spacerWiget(int width) const { QWidget* RasterMainWidget::spacerWiget(int width) const {
auto spacer = new QWidget{}; auto spacer = new QWidget{};
spacer->setHidden(true); spacer->setHidden(true);
spacer->setVisible(true); spacer->setVisible(true);
spacer->setFixedWidth(width); spacer->setFixedWidth(width);
return spacer; return spacer;
} }
void void
RasterMainWidget::panHandle(bool checked) { RasterMainWidget::panHandle(bool checked) {
mMapConvas->selectTool(QString{"pan_tool"}); mMapConvas->selectTool(QString{ "pan_tool" });
} }
void void
RasterMainWidget::zoomInHandle(bool checked) { RasterMainWidget::zoomInHandle(bool checked) {
mMapConvas->selectTool(QString{"zoomin_tool"}); mMapConvas->selectTool(QString{ "zoomin_tool" });
} }
void void
RasterMainWidget::zoomOutHandle(bool checked) { RasterMainWidget::zoomOutHandle(bool checked) {
mMapConvas->selectTool(QString{"zoomout_tool"}); mMapConvas->selectTool(QString{ "zoomout_tool" });
} }
void RasterMainWidget::drawlineHandle(bool checked) void RasterMainWidget::drawlineHandle(bool checked)
{ {
mMapConvas->selectTool("drawline_tool"); mMapConvas->selectTool("drawline_tool");
}
void
RasterMainWidget::tutorialHanle(bool checked) {
if (!QDesktopServices::openUrl(tutorialUrl())) {
QMessageBox::critical(dynamic_cast<QWidget *>(this), "异常", "未能打开系统浏览器");
} }
}
void
RasterMainWidget::srcHandle(bool checked) {
if (!QDesktopServices::openUrl(srcUrl())) {
QMessageBox::critical(dynamic_cast<QWidget *>(this), "异常", "未能打开系统浏览器");
}
}
void
RasterMainWidget::sponsorHandle(bool checked) { void
auto *window = new SponsorWindow(dynamic_cast<QWidget *>(this)); RasterMainWidget::sponsorHandle(bool checked) {
auto* window = new SponsorWindow(dynamic_cast<QWidget*>(this));
window->exec(); window->exec();
window->deleteLater(); window->deleteLater();
} }
void void
RasterMainWidget::refreshHandle(bool checked) { RasterMainWidget::refreshHandle(bool checked) {
mMapConvas->refreshMap(); mMapConvas->refreshMap();
} }
void void
RasterMainWidget::selectHandle(bool checked) { RasterMainWidget::selectHandle(bool checked) {
mMapConvas->selectTool(QString{"select_tool"}); mMapConvas->selectTool(QString{ "select_tool" });
} }
void void
RasterMainWidget::centerChangedHandle(LAMPMainWidget::PointXY pos) { RasterMainWidget::centerChangedHandle(LAMPMainWidget::PointXY pos) {
mCenterText->setText(QString("lon:%1, lat:%2").arg(pos.x()).arg(pos.y())); mCenterText->setText(QString("lon:%1, lat:%2").arg(pos.x()).arg(pos.y()));
} }
void void
RasterMainWidget::zoomChangedHandle(int zoom) { RasterMainWidget::zoomChangedHandle(int zoom) {
mZoomText->setText(QString("%1").arg(zoom)); mZoomText->setText(QString("%1").arg(zoom));
mScaleText->setText(QString("1cm:%1m").arg(this->mMapConvas->scale())); mScaleText->setText(QString("1cm:%1m").arg(this->mMapConvas->scale()));
} }
void void
RasterMainWidget::clickedHandle(LAMPMainWidget::PointXY pos) { RasterMainWidget::clickedHandle(LAMPMainWidget::PointXY pos) {
QString posText = QString("%1, %2").arg(pos.x()).arg(pos.y()); QString posText = QString("%1, %2").arg(pos.x()).arg(pos.y());
if (mSetLeftTop) { if (mSetLeftTop) {
mUi->leftTopText->setText(posText); mUi->leftTopText->setText(posText);
mLeftTop = pos; mLeftTop = pos;
} else { }
else {
mUi->rightBottomText->setText(posText); mUi->rightBottomText->setText(posText);
mRightBottom = pos; mRightBottom = pos;
} }
} }
void void
RasterMainWidget::leftTopClickedHandle() { RasterMainWidget::leftTopClickedHandle() {
mSetLeftTop = true; mSetLeftTop = true;
mUi->selectAction->trigger(); mUi->selectAction->trigger();
} }
void void
RasterMainWidget::rightBottomClickedHandle() { RasterMainWidget::rightBottomClickedHandle() {
mSetLeftTop = false; mSetLeftTop = false;
mUi->selectAction->trigger(); mUi->selectAction->trigger();
} }
void void
RasterMainWidget::layerChanged(QListWidgetItem *current, QListWidgetItem *previous) { RasterMainWidget::layerChanged(QListWidgetItem* current, QListWidgetItem* previous) {
auto mapName = current->text(); auto mapName = current->text();
if (!mMaps.contains(mapName)) { if (!mMaps.contains(mapName)) {
qDebug() << mapName << "不支持"; qDebug() << mapName << "不支持";
@ -314,32 +298,32 @@ RasterMainWidget::layerChanged(QListWidgetItem *current, QListWidgetItem *previo
zoomChangedHandle(mMapConvas->zoomValue()); zoomChangedHandle(mMapConvas->zoomValue());
centerChangedHandle(mMapConvas->mapCenter()); centerChangedHandle(mMapConvas->mapCenter());
} }
void void
RasterMainWidget::createDownloadTask() { RasterMainWidget::createDownloadTask() {
auto taskWindow = new TaskWindow(dynamic_cast<QWidget *>(this)); auto taskWindow = new TaskWindow(dynamic_cast<QWidget*>(this));
taskWindow->exec(); taskWindow->exec();
taskWindow->deleteLater(); taskWindow->deleteLater();
} }
void void
RasterMainWidget::changeTaskTable(int row, int col, QString text) { RasterMainWidget::changeTaskTable(int row, int col, QString text) {
mUi->taskTable->takeItem(row, col); mUi->taskTable->takeItem(row, col);
mUi->taskTable->setItem(row, col, new QTableWidgetItem(text)); mUi->taskTable->setItem(row, col, new QTableWidgetItem(text));
} }
void RasterMainWidget::on_drawArea_triggered() void RasterMainWidget::on_drawArea_triggered()
{ {
mMapConvas->selectTool("drawarea_tool"); mMapConvas->selectTool("drawarea_tool");
} }
void RasterMainWidget::on_addPlaneaction_triggered() void RasterMainWidget::on_addPlaneaction_triggered()
{ {
mMapConvas->selectTool("addplane_tool"); mMapConvas->selectTool("addplane_tool");
} }
void RasterMainWidget::onactioncloseAllRasterFile_triggered() void RasterMainWidget::onactioncloseAllRasterFile_triggered()
{ {

View File

@ -52,8 +52,7 @@ namespace LAMPMainWidget {
void zoomInHandle(bool checked); void zoomInHandle(bool checked);
void zoomOutHandle(bool checked); void zoomOutHandle(bool checked);
void drawlineHandle(bool checked); void drawlineHandle(bool checked);
void tutorialHanle(bool checked);
void srcHandle(bool checked);
void sponsorHandle(bool checked); void sponsorHandle(bool checked);
void refreshHandle(bool checked); void refreshHandle(bool checked);
void selectHandle(bool checked); void selectHandle(bool checked);
@ -70,10 +69,6 @@ namespace LAMPMainWidget {
private: private:
QWidget* spacerWiget(int width) const; QWidget* spacerWiget(int width) const;
protected:
static QString tutorialUrl();
static QString srcUrl();
private slots: private slots:
void on_drawArea_triggered(); void on_drawArea_triggered();
void on_addPlaneaction_triggered(); void on_addPlaneaction_triggered();

View File

@ -12,8 +12,8 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>906</width> <width>898</width>
<height>609</height> <height>580</height>
</rect> </rect>
</property> </property>
<property name="sizePolicy"> <property name="sizePolicy">
@ -84,7 +84,7 @@
<rect> <rect>
<x>0</x> <x>0</x>
<y>0</y> <y>0</y>
<width>906</width> <width>898</width>
<height>22</height> <height>22</height>
</rect> </rect>
</property> </property>
@ -117,14 +117,11 @@
<property name="title"> <property name="title">
<string>工具</string> <string>工具</string>
</property> </property>
<addaction name="actioncloseAllRasterFile"/>
</widget> </widget>
<widget class="QMenu" name="helpMenu"> <widget class="QMenu" name="helpMenu">
<property name="title"> <property name="title">
<string>帮助</string> <string>帮助</string>
</property> </property>
<addaction name="tutorialAction"/>
<addaction name="srcAction"/>
<addaction name="separator"/> <addaction name="separator"/>
</widget> </widget>
<addaction name="projectMenu"/> <addaction name="projectMenu"/>
@ -137,6 +134,9 @@
</widget> </widget>
<widget class="QStatusBar" name="statusbar"/> <widget class="QStatusBar" name="statusbar"/>
<widget class="QToolBar" name="toolBar"> <widget class="QToolBar" name="toolBar">
<property name="enabled">
<bool>false</bool>
</property>
<property name="windowTitle"> <property name="windowTitle">
<string>toolBar</string> <string>toolBar</string>
</property> </property>
@ -378,6 +378,85 @@ p, li { white-space: pre-wrap; }
</layout> </layout>
</widget> </widget>
</widget> </widget>
<widget class="QDockWidget" name="dockWidget_Map">
<property name="layoutDirection">
<enum>Qt::LeftToRight</enum>
</property>
<property name="windowTitle">
<string>地图窗口</string>
</property>
<attribute name="dockWidgetArea">
<number>1</number>
</attribute>
<widget class="QWidget" name="dockWidgetContents_5">
<widget class="QTabWidget" name="tabWidget">
<property name="geometry">
<rect>
<x>10</x>
<y>0</y>
<width>502</width>
<height>274</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="currentIndex">
<number>0</number>
</property>
<widget class="QWidget" name="mapTab">
<attribute name="title">
<string>地图</string>
</attribute>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<layout class="QGridLayout" name="mapCanvasLayout"/>
</item>
</layout>
</widget>
<widget class="QWidget" name="taskTab">
<attribute name="title">
<string>任务</string>
</attribute>
<widget class="QWidget" name="gridLayoutWidget_5">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1431</width>
<height>871</height>
</rect>
</property>
<layout class="QGridLayout" name="taskLayout">
<item row="0" column="0">
<widget class="QTableWidget" name="taskTable"/>
</item>
</layout>
</widget>
</widget>
</widget>
</widget>
</widget>
<widget class="QMenuBar" name="menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>906</width>
<height>23</height>
</rect>
</property>
<widget class="QMenu" name="toolsMenu">
<property name="title">
<string>工具</string>
</property>
<addaction name="actioncloseAllRasterFile"/>
</widget>
<addaction name="toolsMenu"/>
</widget>
<action name="tutorialAction"> <action name="tutorialAction">
<property name="text"> <property name="text">
<string>使用教程</string> <string>使用教程</string>

View File

@ -4,17 +4,18 @@
namespace LAMPMainWidget { namespace LAMPMainWidget {
GaodeNormalProvider::GaodeNormalProvider(QObject *parent) GaodeNormalProvider::GaodeNormalProvider(QObject* parent)
: TmsProvider(parent) { : TmsProvider(parent) {
initCache(); initCache();
} }
QString QString
GaodeNormalProvider::tileUrl(const LAMPMainWidget::PointXY &pos, int zoom) const { GaodeNormalProvider::tileUrl(const LAMPMainWidget::PointXY& pos, int zoom) const {
QString urlFmt = {R"(http://wprd01.is.autonavi.com/appmaptile?style=6&x=%1&y=%2&z=%3)"};
QString urlFmt = { R"(http://wprd01.is.autonavi.com/appmaptile?style=6&x=%1&y=%2&z=%3)" };
return QString(urlFmt).arg(pos.x()).arg(pos.y()).arg(zoom); return QString(urlFmt).arg(pos.x()).arg(pos.y()).arg(zoom);
} }
//http://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=6 //http://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=6
} }

View File

@ -15,12 +15,12 @@
namespace LAMPMainWidget { namespace LAMPMainWidget {
PointXY PointXY
MapCanvas::defaultMapCenter() { MapCanvas::defaultMapCenter() {
return PointXY{116.4074, 39.9042}; return PointXY{ 116.4074, 39.9042 };
} }
MapCanvas::MapCanvas(QWidget *parent) MapCanvas::MapCanvas(QWidget* parent)
: QGraphicsView(parent), : QGraphicsView(parent),
mScene(nullptr), mScene(nullptr),
mMapExtent(), mMapExtent(),
@ -36,6 +36,7 @@ MapCanvas::MapCanvas(QWidget *parent)
mMapUpdateTimer(nullptr), mMapUpdateTimer(nullptr),
mCurrentTool(nullptr), mCurrentTool(nullptr),
mMapTools() { mMapTools() {
setAutoFillBackground(true); setAutoFillBackground(true);
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
@ -50,65 +51,65 @@ MapCanvas::MapCanvas(QWidget *parent)
mMapUpdateTimer->start(200); mMapUpdateTimer->start(200);
setupTools(); setupTools();
this->startTimer(1000); this->startTimer(1000);
} }
MapCanvas::~MapCanvas() { MapCanvas::~MapCanvas() {
mLayers.clear(); mLayers.clear();
delete mScene; delete mScene;
delete mCurrentLayer; delete mCurrentLayer;
delete mMapUpdateTimer; delete mMapUpdateTimer;
} }
void void
MapCanvas::mousePressEvent(QMouseEvent *event) { MapCanvas::mousePressEvent(QMouseEvent* event) {
if (mCurrentTool) { if (mCurrentTool) {
mCurrentTool->execute(event); mCurrentTool->execute(event);
} }
QGraphicsView::mousePressEvent(event); QGraphicsView::mousePressEvent(event);
} }
void void
MapCanvas::mouseReleaseEvent(QMouseEvent *event) { MapCanvas::mouseReleaseEvent(QMouseEvent* event) {
if (mCurrentTool) { if (mCurrentTool) {
mCurrentTool->execute(event); mCurrentTool->execute(event);
} }
QGraphicsView::mouseReleaseEvent(event); QGraphicsView::mouseReleaseEvent(event);
} }
void void
MapCanvas::wheelEvent(QWheelEvent *event) { MapCanvas::wheelEvent(QWheelEvent* event) {
int delta = event->angleDelta().y() / 120; int delta = event->angleDelta().y() / 120;
int zoom = zoomValue(); int zoom = zoomValue();
zoom += delta; zoom += delta;
setZoomValue(zoom); setZoomValue(zoom);
} }
void void
MapCanvas::resizeEvent(QResizeEvent *event) { MapCanvas::resizeEvent(QResizeEvent* event) {
updateViewExtent(true); updateViewExtent(true);
} }
void MapCanvas::mouseMoveEvent(QMouseEvent *event) void MapCanvas::mouseMoveEvent(QMouseEvent* event)
{ {
if (mCurrentTool) { if (mCurrentTool) {
mCurrentTool->execute(event); mCurrentTool->execute(event);
} }
QGraphicsView::mouseMoveEvent(event); QGraphicsView::mouseMoveEvent(event);
} }
void void
MapCanvas::refreshMap() { MapCanvas::refreshMap() {
QMapIterator<QString, MapLayer *> iterator(mLayers); QMapIterator<QString, MapLayer*> iterator(mLayers);
while (iterator.hasNext()) { while (iterator.hasNext()) {
iterator.next(); iterator.next();
iterator.value()->map()->setViewExtent(mViewExtent); iterator.value()->map()->setViewExtent(mViewExtent);
iterator.value()->update(); iterator.value()->update();
} }
mScene->update(); mScene->update();
} }
void void
MapCanvas::addLayer(MapLayer *const layer) { MapCanvas::addLayer(MapLayer* const layer) {
if (!layer) if (!layer)
return; return;
@ -123,15 +124,15 @@ MapCanvas::addLayer(MapLayer *const layer) {
} }
mScene->addItem(layer->map()); mScene->addItem(layer->map());
refreshMap(); refreshMap();
} }
void void
MapCanvas::setZoomValue(const int zoom) { MapCanvas::setZoomValue(const int zoom) {
mZoomValue = normalizeZoom(zoom); mZoomValue = normalizeZoom(zoom);
zoomChanged(mZoomValue); zoomChanged(mZoomValue);
/// 更新每个图层的zoom值 /// 更新每个图层的zoom值
QMapIterator<QString, MapLayer *> iterator(mLayers); QMapIterator<QString, MapLayer*> iterator(mLayers);
while (iterator.hasNext()) { while (iterator.hasNext()) {
iterator.next(); iterator.next();
iterator.value()->setZoomValue(mZoomValue); iterator.value()->setZoomValue(mZoomValue);
@ -139,10 +140,10 @@ MapCanvas::setZoomValue(const int zoom) {
/// 更新可视区域的内容 /// 更新可视区域的内容
updateViewExtent(true); updateViewExtent(true);
} }
void void
MapCanvas::updateViewExtent(bool reset) { MapCanvas::updateViewExtent(bool reset) {
if (!mCurrentLayer) { if (!mCurrentLayer) {
qDebug() << "未设置当前图层,视图区域无法更新"; qDebug() << "未设置当前图层,视图区域无法更新";
return; return;
@ -151,21 +152,23 @@ MapCanvas::updateViewExtent(bool reset) {
if (reset) { if (reset) {
/// 重置视图区域 /// 重置视图区域
mScene->setSceneRect(mCurrentLayer->extent()); mScene->setSceneRect(mCurrentLayer->extent());
QRectF testrect=mCurrentLayer->extent(); QRectF testrect = mCurrentLayer->extent();
mViewExtent.setRect(0, 0, 0, 0); mViewExtent.setRect(0, 0, 0, 0);
mViewExtent.setSize(size()); mViewExtent.setSize(size());
PointXY crsCenter = mCrs->forward(mMapCenter); PointXY crsCenter = mCrs->forward(mMapCenter);
QPointF mapCenter{crsCenter.x() / resolution(), crsCenter.y() / resolution()}; QPointF mapCenter{ crsCenter.x() / resolution(), crsCenter.y() / resolution() };
QPointF offset = mapCenter - mViewExtent.center(); QPointF offset = mapCenter - mViewExtent.center();
mViewExtent.translate(offset.x(), offset.y()); mViewExtent.translate(offset.x(), offset.y());
} else { }
else {
qDebug() << "视图区域更新 平移范围 x ,y "<<-mDragRect.width()<<" , "<<-mDragRect.height() ;
/// 视图偏移并重置偏移属性 /// 视图偏移并重置偏移属性
mViewExtent.translate(-mDragRect.width(), -mDragRect.height()); mViewExtent.translate(-mDragRect.width(), -mDragRect.height());
mDragRect.setRect(0, 0, 0, 0); mDragRect.setRect(0, 0, 0, 0);
/// 更新地图可视区域中心点 /// 更新地图可视区域中心点
QPointF mapCenter = mViewExtent.center(); QPointF mapCenter = mViewExtent.center();
PointXY crsCenter{mapCenter.x() * resolution(), mapCenter.y() * resolution()}; PointXY crsCenter{ mapCenter.x() * resolution(), mapCenter.y() * resolution() };
mMapCenter = mCrs->inverse(crsCenter); mMapCenter = mCrs->inverse(crsCenter);
mapCenterChanged(mMapCenter); mapCenterChanged(mMapCenter);
} }
@ -173,17 +176,17 @@ MapCanvas::updateViewExtent(bool reset) {
/// 刷新地图 /// 刷新地图
centerOn(mViewExtent.center()); centerOn(mViewExtent.center());
refreshMap(); refreshMap();
} }
void void
MapCanvas::setCrs(const CRS *const crs) { MapCanvas::setCrs(const CRS* const crs) {
mCrs = crs; mCrs = crs;
crsChanged(); crsChanged();
updateViewExtent(true); updateViewExtent(true);
} }
void void
MapCanvas::setCurrentLayer(const QString &id) { MapCanvas::setCurrentLayer(const QString& id) {
if (!mLayers.contains(id)) { if (!mLayers.contains(id)) {
qWarning() << "未添加图层=>" << id; qWarning() << "未添加图层=>" << id;
return; return;
@ -193,58 +196,60 @@ MapCanvas::setCurrentLayer(const QString &id) {
setCrs(&mCurrentLayer->crs()); setCrs(&mCurrentLayer->crs());
} }
updateViewExtent(true); updateViewExtent(true);
} }
double double
MapCanvas::scale() const { MapCanvas::scale() const {
return logicalDpiX() * resolution() * 39.37 / 100;; return logicalDpiX() * resolution() * 39.37 / 100;;
} }
double double
MapCanvas::resolution() const { MapCanvas::resolution() const {
if (!mCurrentLayer) { if (!mCurrentLayer) {
qWarning() << "未设置当前图层,无法获取分辨率"; qWarning() << "未设置当前图层,无法获取分辨率";
return 0; return 0;
} }
return mCurrentLayer->resolution(); return mCurrentLayer->resolution();
} }
int int
MapCanvas::zoomValue() const { MapCanvas::zoomValue() const {
if (!mCurrentLayer) { if (!mCurrentLayer) {
qWarning() << "未设置当前图层默认返回zoom值为0"; qWarning() << "未设置当前图层默认返回zoom值为0";
return 0; return 0;
} }
return mCurrentLayer->zoomValue(); return mCurrentLayer->zoomValue();
} }
int int
MapCanvas::normalizeZoom(const int zoom) const { MapCanvas::normalizeZoom(const int zoom) const {
int z{}; int z{};
if (zoom <= kMinZoomValue) { if (zoom <= kMinZoomValue) {
z = kMinZoomValue; z = kMinZoomValue;
} else if (z >= kMaxZoomValue) { }
else if (z >= kMaxZoomValue) {
z = kMaxZoomValue; z = kMaxZoomValue;
} else { }
else {
z = zoom; z = zoom;
} }
return z; return z;
} }
PointXY PointXY
MapCanvas::pixel2Lonlat(const QPointF &point) const { MapCanvas::pixel2Lonlat(const QPointF& point) const {
QPointF scenePoint = mapToScene(QPoint{static_cast<int>(point.x()), static_cast<int>(point.y())}); QPointF scenePoint = mapToScene(QPoint{ static_cast<int>(point.x()), static_cast<int>(point.y()) });
QPointF mapPoint{scenePoint.x() * resolution(), scenePoint.y() * resolution()}; QPointF mapPoint{ scenePoint.x() * resolution(), scenePoint.y() * resolution() };
PointXY crsPoint = mCrs->inverse(PointXY{mapPoint}); PointXY crsPoint = mCrs->inverse(PointXY{ mapPoint });
qDebug() << "坐标装换=>{" << point << "=>" << crsPoint << "}"; qDebug() << "坐标装换=>{" << point << "=>" << crsPoint << "}";
return crsPoint; return crsPoint;
} }
bool bool
MapCanvas::selectTool(const QString &tool) { MapCanvas::selectTool(const QString& tool) {
if (!mMapTools.contains(tool)) { if (!mMapTools.contains(tool)) {
qWarning() << QString("%1工具不存在").arg(tool); qWarning() << QString("%1工具不存在").arg(tool);
return false; return false;
@ -258,19 +263,19 @@ MapCanvas::selectTool(const QString &tool) {
toolPtr->setup(); toolPtr->setup();
return true; return true;
} }
void MapCanvas::timerEvent(QTimerEvent *event) void MapCanvas::timerEvent(QTimerEvent* event)
{ {
MapToolAddplane *maptoolAddplane=dynamic_cast<MapToolAddplane*>(mMapTools["addplane_tool"]); MapToolAddplane* maptoolAddplane = dynamic_cast<MapToolAddplane*>(mMapTools["addplane_tool"]);
QList<MapAutoplane*> planes=maptoolAddplane->getPlanes(); QList<MapAutoplane*> planes = maptoolAddplane->getPlanes();
foreach(MapAutoplane *plane,planes){ foreach(MapAutoplane * plane, planes) {
plane->updatePos(); plane->updatePos();
} }
} }
void void
MapCanvas::setupTools() { MapCanvas::setupTools() {
auto panTool = new MapToolPan(this); auto panTool = new MapToolPan(this);
mMapTools.insert(panTool->id(), panTool); mMapTools.insert(panTool->id(), panTool);
@ -283,19 +288,19 @@ MapCanvas::setupTools() {
auto selectTool = new MapToolSelect(this); auto selectTool = new MapToolSelect(this);
mMapTools.insert(selectTool->id(), selectTool); mMapTools.insert(selectTool->id(), selectTool);
auto drawlineTool=new MapToolDrawline(this); auto drawlineTool = new MapToolDrawline(this);
mMapTools.insert(drawlineTool->id(),drawlineTool); mMapTools.insert(drawlineTool->id(), drawlineTool);
auto drawareTool=new MapToolDrawarea(this); auto drawareTool = new MapToolDrawarea(this);
mMapTools.insert(drawareTool->id(),drawareTool); mMapTools.insert(drawareTool->id(), drawareTool);
auto addplaneTool=new MapToolAddplane(this); auto addplaneTool = new MapToolAddplane(this);
mMapTools.insert(addplaneTool->id(),addplaneTool); mMapTools.insert(addplaneTool->id(), addplaneTool);
} }
} }

View File

@ -20,13 +20,13 @@
#include <maptool.h> #include <maptool.h>
namespace LAMPMainWidget { namespace LAMPMainWidget {
class MapLayer; class MapLayer;
class MapTool; class MapTool;
/** /**
* QGraphicsView * QGraphicsView
* Qt GraphicsView Framework * Qt GraphicsView Framework
*/ */
class MapCanvas : public QGraphicsView { class MapCanvas : public QGraphicsView {
Q_OBJECT Q_OBJECT
signals: signals:
@ -41,7 +41,7 @@ class MapCanvas : public QGraphicsView {
friend class MapToolSelect; friend class MapToolSelect;
public: public:
explicit MapCanvas(QWidget *parent = nullptr); explicit MapCanvas(QWidget* parent = nullptr);
~MapCanvas() override; ~MapCanvas() override;
public: public:
@ -54,7 +54,7 @@ class MapCanvas : public QGraphicsView {
* 使 * 使
* @param layer * @param layer
*/ */
void addLayer(MapLayer *layer); void addLayer(MapLayer* layer);
/** /**
* *
@ -84,48 +84,48 @@ class MapCanvas : public QGraphicsView {
* *
* @return * @return
*/ */
const QRectF &viewExtent() const { return mViewExtent; } const QRectF& viewExtent() const { return mViewExtent; }
/** /**
* *
* *
* @param crs * @param crs
*/ */
void setCrs(const CRS *crs); void setCrs(const CRS* crs);
/** /**
* *
* @return * @return
*/ */
const CRS &crs() const { return *mCrs; } const CRS& crs() const { return *mCrs; }
/** /**
* *
* @param id id * @param id id
*/ */
void setCurrentLayer(const QString &id); void setCurrentLayer(const QString& id);
/** /**
* *
* @return * @return
*/ */
const MapLayer *currentLayer() { return mCurrentLayer; } const MapLayer* currentLayer() { return mCurrentLayer; }
/** /**
* *
* @return * @return
*/ */
const PointXY &mapCenter() const { return mMapCenter; } const PointXY& mapCenter() const { return mMapCenter; }
/** /**
* *
* @param tool * @param tool
* @return * @return
*/ */
bool selectTool(const QString &tool); bool selectTool(const QString& tool);
void timerEvent(QTimerEvent *event); void timerEvent(QTimerEvent* event);
protected: protected:
/** /**
@ -139,7 +139,7 @@ class MapCanvas : public QGraphicsView {
* @param point * @param point
* @return * @return
*/ */
PointXY pixel2Lonlat(const QPointF &point) const; PointXY pixel2Lonlat(const QPointF& point) const;
/** /**
* *
@ -155,35 +155,36 @@ class MapCanvas : public QGraphicsView {
int normalizeZoom(int zoom) const; int normalizeZoom(int zoom) const;
protected: protected:
void mousePressEvent(QMouseEvent *event) override; void mousePressEvent(QMouseEvent* event) override;
void mouseReleaseEvent(QMouseEvent *event) override; void mouseReleaseEvent(QMouseEvent* event) override;
void wheelEvent(QWheelEvent *event) override; void wheelEvent(QWheelEvent* event) override;
void resizeEvent(QResizeEvent *event) override; void resizeEvent(QResizeEvent* event) override;
void mouseMoveEvent(QMouseEvent *event) override; void mouseMoveEvent(QMouseEvent* event) override;
protected: protected:
QGraphicsScene *mScene; QGraphicsScene* mScene;
QRectF mMapExtent; QRectF mMapExtent;
QRectF mViewExtent; QRectF mViewExtent;
QRectF mDragRect; QRectF mDragRect;
bool mIsDragging; bool mIsDragging;
QMap<QString, MapLayer *> mLayers; QMap<QString, MapLayer*> mLayers;
MapLayer *mCurrentLayer; MapLayer* mCurrentLayer;
const CRS *mCrs; const CRS* mCrs;
PointXY mMapCenter; PointXY mMapCenter;
int mZoomValue; int mZoomValue;
PointXY mLastXY; PointXY mLastXY;
QTimer *mMapUpdateTimer; QTimer* mMapUpdateTimer;
MapTool *mCurrentTool; MapTool* mCurrentTool;
QHash<QString, MapTool *> mMapTools; QHash<QString, MapTool*> mMapTools;
private: private:
const static int kDefaultZoomValue{8}; const static int kDefaultZoomValue{ 8 };
static const int kMaxZoomValue{20}; static const int kMaxZoomValue{ 20 };
static const int kMinZoomValue{1}; static const int kMinZoomValue{ 1 };
protected: protected:
// 设置默认地图中心点
static PointXY defaultMapCenter(); static PointXY defaultMapCenter();
}; };
} }

View File

@ -10,28 +10,28 @@
namespace LAMPMainWidget { namespace LAMPMainWidget {
void void
MapCanvasMap::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { MapCanvasMap::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) {
if (!mLayer->provider().hasContent()) { if (!mLayer->provider().hasContent()) {
return; return;
} }
painter->drawImage(mViewExtent.topLeft(), mLayer->provider().preparedImage()); painter->drawImage(mViewExtent.topLeft(), mLayer->provider().preparedImage());
} }
QRectF QRectF
MapCanvasMap::boundingRect() const { MapCanvasMap::boundingRect() const {
auto width = mViewExtent.size().width(); auto width = mViewExtent.size().width();
auto height = mViewExtent.size().height(); auto height = mViewExtent.size().height();
return mViewExtent + QMarginsF(1024, 1024, 1024, 1024); return mViewExtent + QMarginsF(1024, 1024, 1024, 1024);
} }
void MapCanvasMap::setViewExtent(const QRectF &rect) { void MapCanvasMap::setViewExtent(const QRectF& rect) {
//qDebug() << "更新图层显示对象边界=>" << rect; //qDebug() << "更新图层显示对象边界=>" << rect;
if (rect != mViewExtent) { if (rect != mViewExtent) {
prepareGeometryChange(); prepareGeometryChange();
mViewExtent = rect; mViewExtent = rect;
} }
} }
} }

View File

@ -7,10 +7,10 @@
namespace LAMPMainWidget { namespace LAMPMainWidget {
MapLayer::MapLayer( MapLayer::MapLayer(
const QString &id, const QString& id,
LAMPMainWidget::CRS *crs, LAMPMainWidget::CRS* crs,
LAMPMainWidget::MapCanvas *mapCanvas) LAMPMainWidget::MapCanvas* mapCanvas)
: mId(id), : mId(id),
mCrs(crs), mCrs(crs),
mZValue(-1), mZValue(-1),
@ -19,21 +19,21 @@ MapLayer::MapLayer(
mMapCanvasMap(new MapCanvasMap(this)), mMapCanvasMap(new MapCanvasMap(this)),
mMapCanvas(mapCanvas) { mMapCanvas(mapCanvas) {
} }
MapLayer::~MapLayer() { MapLayer::~MapLayer() {
delete mCrs; delete mCrs;
delete mProvider; delete mProvider;
} }
MapLayer::MapLayer(const MapLayer &other) { MapLayer::MapLayer(const MapLayer& other) {
mId = other.mId; mId = other.mId;
mZValue = other.mZValue; mZValue = other.mZValue;
mCrs = other.mCrs; mCrs = other.mCrs;
mMapCanvas = other.mMapCanvas; mMapCanvas = other.mMapCanvas;
} }
MapLayer::MapLayer(MapLayer &&other) noexcept { MapLayer::MapLayer(MapLayer&& other) noexcept {
mId = other.mId; mId = other.mId;
mZValue = other.mZValue; mZValue = other.mZValue;
mCrs = other.mCrs; mCrs = other.mCrs;
@ -43,10 +43,10 @@ MapLayer::MapLayer(MapLayer &&other) noexcept {
other.mCrs = nullptr; other.mCrs = nullptr;
other.mZValue = 0; other.mZValue = 0;
other.mMapCanvas = nullptr; other.mMapCanvas = nullptr;
} }
MapLayer & MapLayer&
MapLayer::operator=(const MapLayer &other) { MapLayer::operator=(const MapLayer& other) {
if (this != &other) { if (this != &other) {
mId = other.mId; mId = other.mId;
mZValue = other.mZValue; mZValue = other.mZValue;
@ -55,10 +55,10 @@ MapLayer::operator=(const MapLayer &other) {
} }
return *this; return *this;
} }
MapLayer & MapLayer&
MapLayer::operator=(MapLayer &&other) noexcept { MapLayer::operator=(MapLayer&& other) noexcept {
if (this != &other) { if (this != &other) {
mId = other.mId; mId = other.mId;
mZValue = other.mZValue; mZValue = other.mZValue;
@ -72,11 +72,11 @@ MapLayer::operator=(MapLayer &&other) noexcept {
} }
return *this; return *this;
} }
void void
MapLayer::update() { MapLayer::update() {
if(!isVisible()){ if (!isVisible()) {
qDebug() << id() << "=>图层不显示,跳过刷新操作"; qDebug() << id() << "=>图层不显示,跳过刷新操作";
mMapCanvasMap->hide(); mMapCanvasMap->hide();
return; return;
@ -84,7 +84,7 @@ MapLayer::update() {
//qDebug() << "刷新图层内容=>" << mMapCanvas->viewExtent()<<QDateTime::currentDateTime()<<"zoom"<<mZoomValue; //qDebug() << "刷新图层内容=>" << mMapCanvas->viewExtent()<<QDateTime::currentDateTime()<<"zoom"<<mZoomValue;
mProvider->createTask(mMapCanvas->viewExtent(), mZoomValue); mProvider->createTask(mMapCanvas->viewExtent(), mZoomValue);
mMapCanvasMap->show(); mMapCanvasMap->show();
} }
} }

View File

@ -9,26 +9,26 @@
#include <mapcanvasmap.h> #include <mapcanvasmap.h>
namespace LAMPMainWidget { namespace LAMPMainWidget {
class MapCanvas; class MapCanvas;
/* /*
* *
*/ */
class MapLayer { class MapLayer {
public: public:
MapLayer(const QString &id, CRS *crs, MapCanvas *mapCanvas); MapLayer(const QString& id, CRS* crs, MapCanvas* mapCanvas);
MapLayer(const MapLayer &other); MapLayer(const MapLayer& other);
MapLayer(MapLayer &&other) noexcept; MapLayer(MapLayer&& other) noexcept;
virtual ~MapLayer(); virtual ~MapLayer();
MapLayer &operator=(const MapLayer &other); MapLayer& operator=(const MapLayer& other);
MapLayer &operator=(MapLayer &&other) noexcept; MapLayer& operator=(MapLayer&& other) noexcept;
public: public:
/* /*
* id * id
* @return id * @return id
*/ */
const QString &id() const { return mId; } const QString& id() const { return mId; }
/* /*
* z * z
@ -40,25 +40,25 @@ class MapLayer {
* *
* @return * @return
*/ */
const CRS &crs() const { return *mCrs; } const CRS& crs() const { return *mCrs; }
/* /*
* map * map
* @return map * @return map
*/ */
const MapCanvas &mapCanvas() const { return *mMapCanvas; } const MapCanvas& mapCanvas() const { return *mMapCanvas; }
/* /*
* *
* @return * @return
*/ */
const LayerProvider &provider() const { return *mProvider; } const LayerProvider& provider() const { return *mProvider; }
/* /*
* id * id
* @param id id * @param id id
*/ */
void setId(const QString &id) { mId = id; } void setId(const QString& id) { mId = id; }
/* /*
* z * z
@ -70,13 +70,13 @@ class MapLayer {
* *
* @param crs * @param crs
*/ */
void setCrs(CRS *const crs) { mCrs = crs; } void setCrs(CRS* const crs) { mCrs = crs; }
/* /*
* *
* @param provider * @param provider
*/ */
void setProvider(LayerProvider *const provider) { mProvider = provider; } void setProvider(LayerProvider* const provider) { mProvider = provider; }
/* /*
* pixel:m * pixel:m
@ -106,25 +106,25 @@ class MapLayer {
* *
* @param map * @param map
*/ */
void setMap(MapCanvasMap *map) { mMapCanvasMap = map; } void setMap(MapCanvasMap* map) { mMapCanvasMap = map; }
/* /*
* *
* @return * @return
*/ */
MapCanvasMap *map() const { return mMapCanvasMap; } MapCanvasMap* map() const { return mMapCanvasMap; }
/* /*
* *
* @return truefalse * @return truefalse
*/ */
bool isVisible() const {return mIsVisible;} bool isVisible() const { return mIsVisible; }
/* /*
* *
* @param visible truefalse * @param visible truefalse
*/ */
void setVisiblity(bool visible) {mIsVisible = visible;} void setVisiblity(bool visible) { mIsVisible = visible; }
/* /*
* *
@ -134,16 +134,16 @@ class MapLayer {
protected: protected:
QString mId; QString mId;
CRS *mCrs; CRS* mCrs;
int mZValue; int mZValue;
int mZoomValue; int mZoomValue;
LayerProvider *mProvider; LayerProvider* mProvider;
MapCanvasMap *mMapCanvasMap; MapCanvasMap* mMapCanvasMap;
const MapCanvas *mMapCanvas; const MapCanvas* mMapCanvas;
bool mIsVisible{false}; bool mIsVisible{ false };
private: private:
const static int kDefaultZoomValue{10}; const static int kDefaultZoomValue{ 10 };
}; };
} }

View File

@ -3,13 +3,13 @@
#include <QtGui/QMouseEvent> #include <QtGui/QMouseEvent>
namespace LAMPMainWidget { namespace LAMPMainWidget {
class MapCanvas; class MapCanvas;
/** /**
* *
*/ */
class MapTool { class MapTool {
public: public:
MapTool(MapCanvas *mapCanvas) : mMapCanvas(mapCanvas) {} MapTool(MapCanvas* mapCanvas) : mMapCanvas(mapCanvas) {}
virtual ~MapTool(); virtual ~MapTool();
public: public:
@ -17,7 +17,7 @@ class MapTool {
* *
* @param event * @param event
*/ */
virtual void execute(QMouseEvent *event) = 0; virtual void execute(QMouseEvent* event) = 0;
/** /**
* 使 * 使
@ -36,7 +36,7 @@ class MapTool {
virtual QString id() = 0; virtual QString id() = 0;
protected: protected:
MapCanvas *mMapCanvas; MapCanvas* mMapCanvas;
}; };
} }

View File

@ -6,9 +6,9 @@
namespace LAMPMainWidget { namespace LAMPMainWidget {
void void
MapToolPan::execute(QMouseEvent *event) { MapToolPan::execute(QMouseEvent* event) {
if(!(event->button() & Qt::LeftButton)){ if (!(event->button() & Qt::LeftButton)) {
return; return;
} }
@ -19,26 +19,26 @@ MapToolPan::execute(QMouseEvent *event) {
if (QEvent::MouseButtonRelease == type) { if (QEvent::MouseButtonRelease == type) {
mDragEndPos = event->pos(); mDragEndPos = event->pos();
QRectF dragRect{mDragStartPos, mDragEndPos}; QRectF dragRect{ mDragStartPos, mDragEndPos };
mMapCanvas->mDragRect = dragRect; mMapCanvas->mDragRect = dragRect;
mMapCanvas->updateViewExtent(); mMapCanvas->updateViewExtent();
} }
} }
void void
MapToolPan::setup() { MapToolPan::setup() {
mMapCanvas->setDragMode(MapCanvas::DragMode::ScrollHandDrag); mMapCanvas->setDragMode(MapCanvas::DragMode::ScrollHandDrag);
} }
QString QString
MapToolPan::id() { MapToolPan::id() {
return QString{"pan_tool"}; return QString{ "pan_tool" };
} }
void void
MapToolPan::deSetup() { MapToolPan::deSetup() {
mMapCanvas->setDragMode(MapCanvas::DragMode::NoDrag); mMapCanvas->setDragMode(MapCanvas::DragMode::NoDrag);
} }
} }

View File

@ -10,8 +10,8 @@ OSTNormalProvider::OSTNormalProvider(QObject *parent)
} }
QString QString
OSTNormalProvider::tileUrl(const LAMPMainWidget::PointXY &pos, int zoom) const { OSTNormalProvider::tileUrl(const LAMPMainWidget::PointXY& pos, int zoom) const {
QString urlFmt = {"https://tile.openstreetmap.org/%1/%2/%3.png"}; QString urlFmt = { "https://tile.openstreetmap.org/%1/%2/%3.png" };
return QString(urlFmt).arg(zoom).arg(pos.y()).arg(pos.x()); return QString(urlFmt).arg(zoom).arg(pos.y()).arg(pos.x());
} }
//https://tile.openstreetmap.org/{z}/{x}/{y}.png //https://tile.openstreetmap.org/{z}/{x}/{y}.png

View File

@ -20,7 +20,7 @@ namespace LAMPMainWidget
void void
DownloadTask::run() DownloadTask::run()
{ {
auto currentLayer = dynamic_cast<const TmsLayer *>(mTaskInfo.layer); auto currentLayer = dynamic_cast<const TmsLayer*>(mTaskInfo.layer);
auto provider = dynamic_cast<const TmsProvider*>(&currentLayer->provider()); auto provider = dynamic_cast<const TmsProvider*>(&currentLayer->provider());
auto tileSize = provider->tileSize(); auto tileSize = provider->tileSize();
@ -33,12 +33,12 @@ namespace LAMPMainWidget
} }
generateSuccessRow(); generateSuccessRow();
ImgWriter imgWriter{mTaskInfo.taskPath, imgSize}; ImgWriter imgWriter{ mTaskInfo.taskPath, imgSize };
QByteArray tileData{}; QByteArray tileData{};
Network web{}; Network web{};
auto item = tiles.constBegin(); auto item = tiles.constBegin();
auto count = tiles.count(); auto count = tiles.count();
int completed{0}; int completed{ 0 };
for (; item != tiles.constEnd(); ++item) { for (; item != tiles.constEnd(); ++item) {
tileData = web.httpsRequest(item.value()); tileData = web.httpsRequest(item.value());
if (tileData.isEmpty()) { if (tileData.isEmpty()) {
@ -53,8 +53,7 @@ namespace LAMPMainWidget
double progress = static_cast<double>(completed) / count; double progress = static_cast<double>(completed) / count;
auto progessStr = QString("%1").arg(progress * 100); auto progessStr = QString("%1").arg(progress * 100);
mTaskInfo.display->takeItem(mRowId, 4); mTaskInfo.display->takeItem(mRowId, 4);
mTaskInfo.display->setItem(mRowId, 4, mTaskInfo.display->setItem(mRowId, 4,new QTableWidgetItem(QString("%1").arg(progress * 100)));
new QTableWidgetItem(QString("%1").arg(progress * 100)));
// mTaskInfo.display->resizeColumnsToContents(); // mTaskInfo.display->resizeColumnsToContents();
// mTaskInfo.display->horizontalHeader()->setStretchLastSection(true); // mTaskInfo.display->horizontalHeader()->setStretchLastSection(true);
} }
@ -99,7 +98,7 @@ namespace LAMPMainWidget
TaskWindow::TaskWindow(QWidget* parent) TaskWindow::TaskWindow(QWidget* parent)
: mUi(new Ui::TaskWindow), : mUi(new Ui::TaskWindow),
mParent(dynamic_cast<RasterMainWidget *>(parent)), mParent(dynamic_cast<RasterMainWidget*>(parent)),
mSavePath(), mSavePath(),
QDialog(parent) QDialog(parent)
{ {
@ -117,7 +116,7 @@ namespace LAMPMainWidget
TaskWindow::setupWindow() TaskWindow::setupWindow()
{ {
setFixedSize(size()); setFixedSize(size());
auto currentLayer = dynamic_cast<const TmsLayer *>(mParent->mMapConvas->currentLayer()); auto currentLayer = dynamic_cast<const TmsLayer*>(mParent->mMapConvas->currentLayer());
auto minZoom = currentLayer->minZoom(); auto minZoom = currentLayer->minZoom();
auto maxZoom = currentLayer->maxZoom(); auto maxZoom = currentLayer->maxZoom();
@ -156,7 +155,7 @@ namespace LAMPMainWidget
mZoomValue, mZoomValue,
mParent->mMapConvas->currentLayer(), mParent->mMapConvas->currentLayer(),
mParent->getTaskTable() mParent->getTaskTable()
/*mParent->mUi->taskTable*/}; /*mParent->mUi->taskTable*/ };
auto task = new DownloadTask(tileInfo); auto task = new DownloadTask(tileInfo);
QThreadPool::globalInstance()->start(task); QThreadPool::globalInstance()->start(task);
@ -166,7 +165,7 @@ namespace LAMPMainWidget
void void
TaskWindow::setupSaveDir() TaskWindow::setupSaveDir()
{ {
auto saveDir = QFileDialog::getExistingDirectory(dynamic_cast<QWidget *>(this), "存储路径选择"); auto saveDir = QFileDialog::getExistingDirectory(dynamic_cast<QWidget*>(this), "存储路径选择");
if (saveDir.isEmpty()) { if (saveDir.isEmpty()) {
qWarning() << "未选择存储路径"; qWarning() << "未选择存储路径";
return; return;
@ -187,12 +186,12 @@ namespace LAMPMainWidget
TaskWindow::taskInfoCheck() TaskWindow::taskInfoCheck()
{ {
if (mTaskName.isEmpty()) { if (mTaskName.isEmpty()) {
QMessageBox::critical(dynamic_cast<QWidget *>(this), "错误", "任务名称为空"); QMessageBox::critical(dynamic_cast<QWidget*>(this), "错误", "任务名称为空");
return false; return false;
} }
if (mSavePath.isEmpty()) { if (mSavePath.isEmpty()) {
QMessageBox::critical(dynamic_cast<QWidget *>(this), "错误", "存储路径为空"); QMessageBox::critical(dynamic_cast<QWidget*>(this), "错误", "存储路径为空");
return false; return false;
} }

View File

@ -10,17 +10,17 @@
namespace LAMPMainWidget { namespace LAMPMainWidget {
TmsLayer::TmsLayer(LAMPMainWidget::TmsProviders provider, TmsLayer::TmsLayer(LAMPMainWidget::TmsProviders provider,
const QString &id, const QString& id,
LAMPMainWidget::MapCanvas *mapCanvas, LAMPMainWidget::MapCanvas* mapCanvas,
LAMPMainWidget::CRS *crs) LAMPMainWidget::CRS* crs)
: MapLayer(id, crs, mapCanvas) { : MapLayer(id, crs, mapCanvas) {
setProvider(TmsProviderFactory::create(provider)); setProvider(TmsProviderFactory::create(provider));
} }
double double
TmsLayer::resolution() const { TmsLayer::resolution() const {
auto pd = dynamic_cast<const TmsProvider *>(&provider()); auto pd = dynamic_cast<const TmsProvider*>(&provider());
auto sz = pd->tileSize(); auto sz = pd->tileSize();
double length = crs().extent().width(); double length = crs().extent().width();
double result = length / ((power2(zoomValue())) * sz.width()); double result = length / ((power2(zoomValue())) * sz.width());
@ -30,40 +30,43 @@ TmsLayer::resolution() const {
#endif #endif
return result; return result;
} }
QRectF QRectF
TmsLayer::extent() const { TmsLayer::extent() const {
auto pd = dynamic_cast<const TmsProvider *>(&provider()); auto pd = dynamic_cast<const TmsProvider*>(&provider());
QSize sz = pd->tileSize(); QSize sz = pd->tileSize();
int width = power2(zoomValue()) * sz.width(); int width = power2(zoomValue()) * sz.width();
int height = power2(zoomValue()) * sz.height(); int height = power2(zoomValue()) * sz.height();
//#ifdef DEBUG //#ifdef DEBUG
// qDebug() << "layer extent=>{width:" << width << ", height:" << height << "}"; // qDebug() << "layer extent=>{width:" << width << ", height:" << height << "}";
//#endif //#endif
return {0, 0, static_cast<qreal>(width), static_cast<qreal>(height)}; return { 0, 0, static_cast<qreal>(width), static_cast<qreal>(height) };
} }
void void
TmsLayer::setZoomValue(int zoom) { TmsLayer::setZoomValue(int zoom) {
int zoomValue{}; int zoomValue{};
if (zoom <= minZoom()) { if (zoom <= minZoom()) {
zoomValue = minZoom(); zoomValue = minZoom();
} else if (zoom >= maxZoom()) { }
else if (zoom >= maxZoom()) {
zoomValue = maxZoom(); zoomValue = maxZoom();
} else { }
else {
zoomValue = zoom; zoomValue = zoom;
} }
mZoomValue = zoomValue; mZoomValue = zoomValue;
} }
bool bool
TmsLayer::parseTiles(const QRectF &rect, int zoom, QHash<QPoint, QString> &tiles, QSize &size) const { TmsLayer::parseTiles(const QRectF& rect, int zoom, QHash<QPoint, QString>& tiles, QSize& size) const {
auto pd = dynamic_cast<const TmsProvider *>(&provider());
auto pd = dynamic_cast<const TmsProvider*>(&provider());
auto tileSize = pd->tileSize(); auto tileSize = pd->tileSize();
auto resolution = mCrs->extent().width() / ((power2(zoom)) * tileSize.width()); auto resolution = mCrs->extent().width() / ((power2(zoom)) * tileSize.width());
@ -76,7 +79,7 @@ TmsLayer::parseTiles(const QRectF &rect, int zoom, QHash<QPoint, QString> &tiles
auto xMax = qFloor(mapRightBottom.x() / tileSize.width()); auto xMax = qFloor(mapRightBottom.x() / tileSize.width());
auto yMin = qFloor(mapLeftTop.y() / tileSize.height()); auto yMin = qFloor(mapLeftTop.y() / tileSize.height());
auto yMax = qFloor(mapRightBottom.y() / tileSize.height()); auto yMax = qFloor(mapRightBottom.y() / tileSize.height());
if((xMin > xMax) || (yMin > yMax)){ if ((xMin > xMax) || (yMin > yMax)) {
qDebug() << "下载区边界错误"; qDebug() << "下载区边界错误";
return false; return false;
} }
@ -92,6 +95,6 @@ TmsLayer::parseTiles(const QRectF &rect, int zoom, QHash<QPoint, QString> &tiles
} }
return true; return true;
} }
} }

View File

@ -31,7 +31,7 @@ namespace LAMPMainWidget
mImage(nullptr) mImage(nullptr)
{ {
if (!QFile::exists(mDbName)) { if (!QFile::exists(mDbName)) {
QFile dbFile{mDbName}; QFile dbFile{ mDbName };
dbFile.open(QIODevice::ReadWrite); dbFile.open(QIODevice::ReadWrite);
dbFile.close(); dbFile.close();
} }
@ -52,7 +52,7 @@ namespace LAMPMainWidget
return false; return false;
} }
QSqlQuery sql{mDbConn}; QSqlQuery sql{ mDbConn };
if (!mDbConn.tables().contains(mTableName)) { if (!mDbConn.tables().contains(mTableName)) {
sql.prepare(QString("create table %1 (" sql.prepare(QString("create table %1 ("
"id integer primary key autoincrement," "id integer primary key autoincrement,"
@ -76,7 +76,7 @@ namespace LAMPMainWidget
{ {
QByteArray res{}; QByteArray res{};
mDbConn.open(); mDbConn.open();
QSqlQuery select{mDbConn}; QSqlQuery select{ mDbConn };
select.prepare(QString("select data from %1 " select.prepare(QString("select data from %1 "
"where provider = :provider " "where provider = :provider "
"and zoom = :zoom " "and zoom = :zoom "
@ -109,7 +109,7 @@ namespace LAMPMainWidget
return false; return false;
} }
mDbConn.open(); mDbConn.open();
QSqlQuery sql{mDbConn}; QSqlQuery sql{ mDbConn };
sql.prepare(QString{ sql.prepare(QString{
"insert into %1 (provider, zoom, position, data)" "insert into %1 (provider, zoom, position, data)"
"values( :provider, :zoom, :position, :data)" "values( :provider, :zoom, :position, :data)"
@ -153,11 +153,11 @@ namespace LAMPMainWidget
for (int i = xMin; i <= xMax; ++i) { for (int i = xMin; i <= xMax; ++i) {
for (int j = yMin; j <= yMax; ++j) { for (int j = yMin; j <= yMax; ++j) {
TileInfo tile{}; TileInfo tile{};
tile.index = QPointF{i - xMin - xOffset, j - yMin - yOffset}; tile.index = QPointF{ i - xMin - xOffset, j - yMin - yOffset };
tile.position = QPoint{i, j}; tile.position = QPoint{ i, j };
tile.zoom = zoom; tile.zoom = zoom;
tile.coord = QPoint{i - xMin, j - yMin}; tile.coord = QPoint{ i - xMin, j - yMin };
tile.url = tileUrl(PointXY{static_cast<double>(i), static_cast<double>(j)}, zoom); tile.url = tileUrl(PointXY{ static_cast<double>(i), static_cast<double>(j) }, zoom);
auto tileData = getCache(tile.position, tile.zoom); auto tileData = getCache(tile.position, tile.zoom);
if (!tileData.isEmpty()) { if (!tileData.isEmpty()) {
tile.data = tileData; tile.data = tileData;
@ -178,7 +178,7 @@ namespace LAMPMainWidget
if (!cacheContains(tile.position, tile.zoom)) { if (!cacheContains(tile.position, tile.zoom)) {
addCache(tile.position, tile.zoom, tile.data); addCache(tile.position, tile.zoom, tile.data);
} }
QPainter painter{mImage}; QPainter painter{ mImage };
QImage img = QImage::fromData(tile.data); QImage img = QImage::fromData(tile.data);
if (img.isNull()) { if (img.isNull()) {
return; return;
@ -193,7 +193,7 @@ namespace LAMPMainWidget
void void
TmsProvider::newImage(const QRectF& rect) TmsProvider::newImage(const QRectF& rect)
{ {
QSize imgSize{int(rect.width()), int(rect.height())}; QSize imgSize{ int(rect.width()), int(rect.height()) };
if (!mImage || imgSize != mImage->size()) { if (!mImage || imgSize != mImage->size()) {
mImage = new QImage(imgSize, QImage::Format_RGB32); mImage = new QImage(imgSize, QImage::Format_RGB32);
} }

View File

@ -5,16 +5,17 @@
namespace LAMPMainWidget { namespace LAMPMainWidget {
QHash<TmsProviders, LayerProvider *> TmsProviderFactory::mProviders{}; QHash<TmsProviders, LayerProvider*> TmsProviderFactory::mProviders{};
LayerProvider * LayerProvider*
TmsProviderFactory::create(LAMPMainWidget::TmsProviders provider) { TmsProviderFactory::create(LAMPMainWidget::TmsProviders provider) {
LayerProvider *result = nullptr; LayerProvider* result = nullptr;
switch (provider) { switch (provider) {
case OSTNormalMap: case OSTNormalMap:
if (mProviders.contains(OSTNormalMap)) { if (mProviders.contains(OSTNormalMap)) {
result = mProviders.value(OSTNormalMap); result = mProviders.value(OSTNormalMap);
} else { }
else {
result = new OSTNormalProvider(); result = new OSTNormalProvider();
mProviders.insert(OSTNormalMap, result); mProviders.insert(OSTNormalMap, result);
} }
@ -22,7 +23,8 @@ TmsProviderFactory::create(LAMPMainWidget::TmsProviders provider) {
case GaodeNormapMap: case GaodeNormapMap:
if (mProviders.contains(GaodeNormapMap)) { if (mProviders.contains(GaodeNormapMap)) {
result = mProviders.value(GaodeNormapMap); result = mProviders.value(GaodeNormapMap);
} else { }
else {
result = new GaodeNormalProvider(); result = new GaodeNormalProvider();
mProviders.insert(GaodeNormapMap, result); mProviders.insert(GaodeNormapMap, result);
} }
@ -31,7 +33,7 @@ TmsProviderFactory::create(LAMPMainWidget::TmsProviders provider) {
} }
return result; return result;
} }
} }

View File

@ -106,6 +106,7 @@
<IncludePath>.;.\RasterMainWidget;..\RasterProcessToolWidget;..\RasterProcessToolWidget\ToolBoxManager;..\BaseCommonLibrary;..\BaseCommonLibrary\BaseTool;..\BaseCommonLibrary\ToolAbstract;..\GPUBaseLib\GPUTool;..\GPUBaseLib;..\RasterMainWidgetGUI;..\RasterMainWidgetGUI\RasterMainWidget;$(IncludePath)</IncludePath> <IncludePath>.;.\RasterMainWidget;..\RasterProcessToolWidget;..\RasterProcessToolWidget\ToolBoxManager;..\BaseCommonLibrary;..\BaseCommonLibrary\BaseTool;..\BaseCommonLibrary\ToolAbstract;..\GPUBaseLib\GPUTool;..\GPUBaseLib;..\RasterMainWidgetGUI;..\RasterMainWidgetGUI\RasterMainWidget;$(IncludePath)</IncludePath>
<CopyLocalProjectReference>true</CopyLocalProjectReference> <CopyLocalProjectReference>true</CopyLocalProjectReference>
<CopyCppRuntimeToOutputDir>true</CopyCppRuntimeToOutputDir> <CopyCppRuntimeToOutputDir>true</CopyCppRuntimeToOutputDir>
<LinkIncremental>true</LinkIncremental>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
<IncludePath>.;.\RasterMainWidget;..\RasterProcessToolWidget;..\RasterProcessToolWidget\ToolBoxManager;..\BaseCommonLibrary;..\BaseCommonLibrary\BaseTool;..\BaseCommonLibrary\ToolAbstract;..\GPUBaseLib\GPUTool;..\GPUBaseLib;..\RasterMainWidgetGUI;..\RasterMainWidgetGUI\RasterMainWidget;$(IncludePath)</IncludePath> <IncludePath>.;.\RasterMainWidget;..\RasterProcessToolWidget;..\RasterProcessToolWidget\ToolBoxManager;..\BaseCommonLibrary;..\BaseCommonLibrary\BaseTool;..\BaseCommonLibrary\ToolAbstract;..\GPUBaseLib\GPUTool;..\GPUBaseLib;..\RasterMainWidgetGUI;..\RasterMainWidgetGUI\RasterMainWidget;$(IncludePath)</IncludePath>
@ -115,6 +116,10 @@
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
<ClCompile> <ClCompile>
<PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_SILENCE_NONFLOATING_COMPLEX_DEPRECATION_WARNING;RASTERMAINWIDGETGUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_SILENCE_NONFLOATING_COMPLEX_DEPRECATION_WARNING;RASTERMAINWIDGETGUI_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<OpenMPSupport>true</OpenMPSupport>
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
<WholeProgramOptimization>false</WholeProgramOptimization>
<Optimization>Disabled</Optimization>
</ClCompile> </ClCompile>
</ItemDefinitionGroup> </ItemDefinitionGroup>
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'"> <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">

View File

@ -21,6 +21,9 @@
<UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier> <UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier>
<Extensions>ts</Extensions> <Extensions>ts</Extensions>
</Filter> </Filter>
<Filter Include="RasterLayer">
<UniqueIdentifier>{1a65f538-c16c-4824-895f-105eb2fc502e}</UniqueIdentifier>
</Filter>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<QtRcc Include="RasterMainWidgetGUI.qrc"> <QtRcc Include="RasterMainWidgetGUI.qrc">

View File

@ -7,6 +7,7 @@ namespace RasterMessageShow {
RasterWidgetMessageShow::RasterWidgetMessageShow(QObject* parant):QObject(parant) RasterWidgetMessageShow::RasterWidgetMessageShow(QObject* parant):QObject(parant)
{ {
this->textBrowserMessage = nullptr;
QObject::connect(this, SIGNAL(ShowMessage(QString)), this, SLOT(ShowMessageInfo(QString))); QObject::connect(this, SIGNAL(ShowMessage(QString)), this, SLOT(ShowMessageInfo(QString)));
} }
@ -26,12 +27,12 @@ namespace RasterMessageShow {
void RasterWidgetMessageShow::ShowMessageInfo(QString Message) void RasterWidgetMessageShow::ShowMessageInfo(QString Message)
{ {
std::cout << Message.toLocal8Bit().constData() << std::endl;
if (nullptr != this->textBrowserMessage) { if (nullptr != this->textBrowserMessage) {
this->textBrowserMessage->append(Message); this->textBrowserMessage->append(Message);
this->textBrowserMessage->moveCursor(QTextCursor::MoveOperation::End); this->textBrowserMessage->moveCursor(QTextCursor::MoveOperation::End);
this->textBrowserMessage->repaint(); this->textBrowserMessage->repaint();
std::cout << Message.toLocal8Bit().constData() << std::endl; std::cout << Message.toLocal8Bit().constData() << std::endl;
} }
else {} else {}
} }

View File

@ -1,6 +1,8 @@
#include "LAMPMainWidgetRunProgram.h" #include "LAMPMainWidgetRunProgram.h"
#include <QtWidgets/QApplication> #include <QtWidgets/QApplication>
// 这个项目是基于easygis项目原项目地址 https://gitee.com/stormeye2020/easygis.git
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
QApplication a(argc, argv); QApplication a(argc, argv);