Merge pull request 'RFPC-dev:发布最新版本' (#14) from RFPC-dev into Release
Reviewed-on: http://123.153.4.249:22779/LAMPSARToolSoftware/RasterProcessTool/pulls/14Release
commit
ab654ed02b
|
@ -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()
|
||||||
{
|
{
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -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>
|
||||||
|
|
|
@ -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
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -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);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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();
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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 图层是否可显示,true显示,false则不显示
|
* @return 图层是否可显示,true显示,false则不显示
|
||||||
*/
|
*/
|
||||||
bool isVisible() const {return mIsVisible;}
|
bool isVisible() const { return mIsVisible; }
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 设值图层的可显示属性
|
* 设值图层的可显示属性
|
||||||
* @param visible true为显示,false则不显示
|
* @param visible true为显示,false则不显示
|
||||||
*/
|
*/
|
||||||
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 };
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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*>(¤tLayer->provider());
|
auto provider = dynamic_cast<const TmsProvider*>(¤tLayer->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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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'">
|
||||||
|
|
|
@ -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">
|
||||||
|
|
|
@ -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 {}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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);
|
||||||
|
|
Loading…
Reference in New Issue