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 {
|
||||
|
||||
QString
|
||||
RasterMainWidget::tutorialUrl() {
|
||||
return QString{R"(https://gitee.com/qizr_admin/LAMPMainWidget)"};
|
||||
}
|
||||
QHash<QString, MapLayer*>RasterMainWidget::mMaps{};
|
||||
|
||||
QString
|
||||
RasterMainWidget::srcUrl() {
|
||||
return QString{R"(https://gitee.com/qizr_admin/LAMPMainWidget)"};
|
||||
}
|
||||
|
||||
QHash<QString, MapLayer *>RasterMainWidget::mMaps{};
|
||||
|
||||
RasterMainWidget::RasterMainWidget(QWidget *parent)
|
||||
RasterMainWidget::RasterMainWidget(QWidget* parent)
|
||||
: mUi(new Ui::RasterMainWidget),
|
||||
mMapConvas(new MapCanvas),
|
||||
mScaleText(new QLineEdit),
|
||||
|
@ -41,7 +31,7 @@ RasterMainWidget::RasterMainWidget(QWidget *parent)
|
|||
mCenterLabel(new QLabel),
|
||||
mZoomText(new QLineEdit),
|
||||
mZoomLabel(new QLabel),
|
||||
mMapActionGroup(new QActionGroup(dynamic_cast<QObject *>(this))),
|
||||
mMapActionGroup(new QActionGroup(dynamic_cast<QObject*>(this))),
|
||||
mSetLeftTop(true),
|
||||
mLayerList(),
|
||||
mLeftTop(),
|
||||
|
@ -55,34 +45,46 @@ RasterMainWidget::RasterMainWidget(QWidget *parent)
|
|||
setupActions();
|
||||
setRightToolbox();
|
||||
|
||||
//mUi->panAction->trigger();
|
||||
//mUi->layerList->setCurrentItem(mLayerList.first());
|
||||
mUi->panAction->trigger();
|
||||
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()));
|
||||
|
||||
}
|
||||
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 mMapConvas;
|
||||
delete mScaleText;
|
||||
delete mScaleLabel;
|
||||
delete mCenterText;
|
||||
delete mCenterLabel;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::setupTaskWindow() {
|
||||
void
|
||||
RasterMainWidget::setupTaskWindow() {
|
||||
mUi->taskTable->setColumnCount(5);
|
||||
mUi->taskTable->setHorizontalHeaderLabels(QStringList{
|
||||
"名称", "范围", "zoom值", "数据源", "进度"
|
||||
});
|
||||
mUi->taskTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::setupActions() {
|
||||
void
|
||||
RasterMainWidget::setupActions() {
|
||||
mMapActionGroup->addAction(mUi->panAction);
|
||||
mMapActionGroup->addAction(mUi->zoomInAction);
|
||||
mMapActionGroup->addAction(mUi->zoomOutAction);
|
||||
|
@ -93,16 +95,15 @@ RasterMainWidget::setupActions() {
|
|||
QObject::connect(mUi->panAction, &QAction::triggered, this, &RasterMainWidget::panHandle);
|
||||
QObject::connect(mUi->zoomInAction, &QAction::triggered, this, &RasterMainWidget::zoomInHandle);
|
||||
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->sponsorAction, &QAction::triggered, this, &RasterMainWidget::sponsorHandle);
|
||||
QObject::connect(mUi->selectAction, &QAction::triggered, this, &RasterMainWidget::selectHandle);
|
||||
QObject::connect(mUi->downloadAction, &QAction::triggered, this, &RasterMainWidget::createDownloadTask);
|
||||
QObject::connect(mUi->drawlineAction, &QAction::triggered, this, &RasterMainWidget::drawlineHandle);
|
||||
}
|
||||
}
|
||||
|
||||
void RasterMainWidget::setupWindow() {
|
||||
void RasterMainWidget::setupWindow() {
|
||||
mUi->mapCanvasLayout->addWidget(mMapConvas);
|
||||
//setFixedSize(size());
|
||||
//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->leftTopBtn, &QPushButton::clicked, this, &RasterMainWidget::leftTopClickedHandle);
|
||||
QObject::connect(mUi->rightBottomBtn, &QPushButton::clicked, this, &RasterMainWidget::rightBottomClickedHandle);
|
||||
}
|
||||
|
||||
|
||||
RasterMessageShow::RasterWidgetMessageShow* messageshow = RasterMessageShow::RasterWidgetMessageShow::getInstance(this);
|
||||
messageshow->bandingTextBrowserMessage(this->mUi->textBrowserMessage);
|
||||
|
||||
|
||||
}
|
||||
|
||||
void RasterMainWidget::setupStatusBar() {
|
||||
void RasterMainWidget::setupStatusBar() {
|
||||
/// 比例尺
|
||||
mScaleLabel->setText("比例尺");
|
||||
mScaleText->setText(QString("1cm : %1m").arg(mMapConvas->scale()));
|
||||
|
@ -152,28 +147,28 @@ void RasterMainWidget::setupStatusBar() {
|
|||
mCenterText->setReadOnly(true);
|
||||
mUi->statusbar->addWidget(mCenterLabel);
|
||||
mUi->statusbar->addWidget(mCenterText);
|
||||
}
|
||||
}
|
||||
|
||||
void RasterMainWidget::setupLayers() {
|
||||
void RasterMainWidget::setupLayers() {
|
||||
initMaps();
|
||||
auto i = mMaps.constBegin();
|
||||
for (; i != mMaps.constEnd(); ++i) {
|
||||
mLayerList.append(new QListWidgetItem(i.key(), mUi->layerList));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::initMaps() {
|
||||
if (mMaps.isEmpty()) {
|
||||
mMaps = QHash<QString, MapLayer *>{
|
||||
void
|
||||
RasterMainWidget::initMaps() {
|
||||
if (false&&mMaps.isEmpty()) {
|
||||
mMaps = QHash<QString, MapLayer*>{
|
||||
{"Openstreet地图", new TmsLayer(OSTNormalMap, "ostnormalmap", mMapConvas)},
|
||||
{"高德地图", new TmsLayer(GaodeNormapMap, "gaodenormalmap", mMapConvas)}
|
||||
};
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void RasterMainWidget::setRightToolbox()
|
||||
{
|
||||
void RasterMainWidget::setRightToolbox()
|
||||
{
|
||||
this->toolboxDockWidget = new QDockWidget(tr(u8"工具箱"), this);
|
||||
toolboxDockWidget->setAllowedAreas(Qt::LeftDockWidgetArea | Qt::RightDockWidgetArea);
|
||||
toolBoxWidget = new ToolBoxWidget(this);
|
||||
|
@ -181,115 +176,104 @@ void RasterMainWidget::setRightToolbox()
|
|||
addDockWidget(Qt::LeftDockWidgetArea, toolboxDockWidget);
|
||||
setDockOptions(QMainWindow::AllowNestedDocks | QMainWindow::AllowTabbedDocks);
|
||||
this->initToolbox();
|
||||
}
|
||||
}
|
||||
|
||||
void RasterMainWidget::initToolbox()
|
||||
{
|
||||
void RasterMainWidget::initToolbox()
|
||||
{
|
||||
QString appPath = QCoreApplication::applicationDirPath();
|
||||
QString pluginPath = JoinPath(appPath, "Toolbox");
|
||||
|
||||
toolBoxWidget->initToolbox(pluginPath);
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
QWidget *RasterMainWidget::spacerWiget(int width) const {
|
||||
QWidget* RasterMainWidget::spacerWiget(int width) const {
|
||||
auto spacer = new QWidget{};
|
||||
spacer->setHidden(true);
|
||||
spacer->setVisible(true);
|
||||
spacer->setFixedWidth(width);
|
||||
|
||||
return spacer;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::panHandle(bool checked) {
|
||||
mMapConvas->selectTool(QString{"pan_tool"});
|
||||
}
|
||||
void
|
||||
RasterMainWidget::panHandle(bool checked) {
|
||||
mMapConvas->selectTool(QString{ "pan_tool" });
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::zoomInHandle(bool checked) {
|
||||
mMapConvas->selectTool(QString{"zoomin_tool"});
|
||||
}
|
||||
void
|
||||
RasterMainWidget::zoomInHandle(bool checked) {
|
||||
mMapConvas->selectTool(QString{ "zoomin_tool" });
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::zoomOutHandle(bool checked) {
|
||||
mMapConvas->selectTool(QString{"zoomout_tool"});
|
||||
}
|
||||
void
|
||||
RasterMainWidget::zoomOutHandle(bool checked) {
|
||||
mMapConvas->selectTool(QString{ "zoomout_tool" });
|
||||
}
|
||||
|
||||
void RasterMainWidget::drawlineHandle(bool checked)
|
||||
{
|
||||
void RasterMainWidget::drawlineHandle(bool checked)
|
||||
{
|
||||
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) {
|
||||
auto *window = new SponsorWindow(dynamic_cast<QWidget *>(this));
|
||||
|
||||
void
|
||||
RasterMainWidget::sponsorHandle(bool checked) {
|
||||
auto* window = new SponsorWindow(dynamic_cast<QWidget*>(this));
|
||||
window->exec();
|
||||
window->deleteLater();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::refreshHandle(bool checked) {
|
||||
void
|
||||
RasterMainWidget::refreshHandle(bool checked) {
|
||||
mMapConvas->refreshMap();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::selectHandle(bool checked) {
|
||||
mMapConvas->selectTool(QString{"select_tool"});
|
||||
}
|
||||
void
|
||||
RasterMainWidget::selectHandle(bool checked) {
|
||||
mMapConvas->selectTool(QString{ "select_tool" });
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::centerChangedHandle(LAMPMainWidget::PointXY pos) {
|
||||
void
|
||||
RasterMainWidget::centerChangedHandle(LAMPMainWidget::PointXY pos) {
|
||||
mCenterText->setText(QString("lon:%1, lat:%2").arg(pos.x()).arg(pos.y()));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::zoomChangedHandle(int zoom) {
|
||||
void
|
||||
RasterMainWidget::zoomChangedHandle(int zoom) {
|
||||
mZoomText->setText(QString("%1").arg(zoom));
|
||||
mScaleText->setText(QString("1cm:%1m").arg(this->mMapConvas->scale()));
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::clickedHandle(LAMPMainWidget::PointXY pos) {
|
||||
void
|
||||
RasterMainWidget::clickedHandle(LAMPMainWidget::PointXY pos) {
|
||||
QString posText = QString("%1, %2").arg(pos.x()).arg(pos.y());
|
||||
if (mSetLeftTop) {
|
||||
mUi->leftTopText->setText(posText);
|
||||
mLeftTop = pos;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
mUi->rightBottomText->setText(posText);
|
||||
mRightBottom = pos;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::leftTopClickedHandle() {
|
||||
void
|
||||
RasterMainWidget::leftTopClickedHandle() {
|
||||
mSetLeftTop = true;
|
||||
mUi->selectAction->trigger();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::rightBottomClickedHandle() {
|
||||
void
|
||||
RasterMainWidget::rightBottomClickedHandle() {
|
||||
mSetLeftTop = false;
|
||||
mUi->selectAction->trigger();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::layerChanged(QListWidgetItem *current, QListWidgetItem *previous) {
|
||||
void
|
||||
RasterMainWidget::layerChanged(QListWidgetItem* current, QListWidgetItem* previous) {
|
||||
auto mapName = current->text();
|
||||
if (!mMaps.contains(mapName)) {
|
||||
qDebug() << mapName << "不支持";
|
||||
|
@ -314,32 +298,32 @@ RasterMainWidget::layerChanged(QListWidgetItem *current, QListWidgetItem *previo
|
|||
|
||||
zoomChangedHandle(mMapConvas->zoomValue());
|
||||
centerChangedHandle(mMapConvas->mapCenter());
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::createDownloadTask() {
|
||||
auto taskWindow = new TaskWindow(dynamic_cast<QWidget *>(this));
|
||||
void
|
||||
RasterMainWidget::createDownloadTask() {
|
||||
auto taskWindow = new TaskWindow(dynamic_cast<QWidget*>(this));
|
||||
taskWindow->exec();
|
||||
taskWindow->deleteLater();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
RasterMainWidget::changeTaskTable(int row, int col, QString text) {
|
||||
void
|
||||
RasterMainWidget::changeTaskTable(int row, int col, QString text) {
|
||||
mUi->taskTable->takeItem(row, col);
|
||||
mUi->taskTable->setItem(row, col, new QTableWidgetItem(text));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RasterMainWidget::on_drawArea_triggered()
|
||||
{
|
||||
void RasterMainWidget::on_drawArea_triggered()
|
||||
{
|
||||
mMapConvas->selectTool("drawarea_tool");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void RasterMainWidget::on_addPlaneaction_triggered()
|
||||
{
|
||||
void RasterMainWidget::on_addPlaneaction_triggered()
|
||||
{
|
||||
mMapConvas->selectTool("addplane_tool");
|
||||
}
|
||||
}
|
||||
|
||||
void RasterMainWidget::onactioncloseAllRasterFile_triggered()
|
||||
{
|
||||
|
|
|
@ -52,8 +52,7 @@ namespace LAMPMainWidget {
|
|||
void zoomInHandle(bool checked);
|
||||
void zoomOutHandle(bool checked);
|
||||
void drawlineHandle(bool checked);
|
||||
void tutorialHanle(bool checked);
|
||||
void srcHandle(bool checked);
|
||||
|
||||
void sponsorHandle(bool checked);
|
||||
void refreshHandle(bool checked);
|
||||
void selectHandle(bool checked);
|
||||
|
@ -70,10 +69,6 @@ namespace LAMPMainWidget {
|
|||
private:
|
||||
QWidget* spacerWiget(int width) const;
|
||||
|
||||
protected:
|
||||
static QString tutorialUrl();
|
||||
static QString srcUrl();
|
||||
|
||||
private slots:
|
||||
void on_drawArea_triggered();
|
||||
void on_addPlaneaction_triggered();
|
||||
|
|
|
@ -12,8 +12,8 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>906</width>
|
||||
<height>609</height>
|
||||
<width>898</width>
|
||||
<height>580</height>
|
||||
</rect>
|
||||
</property>
|
||||
<property name="sizePolicy">
|
||||
|
@ -84,7 +84,7 @@
|
|||
<rect>
|
||||
<x>0</x>
|
||||
<y>0</y>
|
||||
<width>906</width>
|
||||
<width>898</width>
|
||||
<height>22</height>
|
||||
</rect>
|
||||
</property>
|
||||
|
@ -117,14 +117,11 @@
|
|||
<property name="title">
|
||||
<string>工具</string>
|
||||
</property>
|
||||
<addaction name="actioncloseAllRasterFile"/>
|
||||
</widget>
|
||||
<widget class="QMenu" name="helpMenu">
|
||||
<property name="title">
|
||||
<string>帮助</string>
|
||||
</property>
|
||||
<addaction name="tutorialAction"/>
|
||||
<addaction name="srcAction"/>
|
||||
<addaction name="separator"/>
|
||||
</widget>
|
||||
<addaction name="projectMenu"/>
|
||||
|
@ -137,6 +134,9 @@
|
|||
</widget>
|
||||
<widget class="QStatusBar" name="statusbar"/>
|
||||
<widget class="QToolBar" name="toolBar">
|
||||
<property name="enabled">
|
||||
<bool>false</bool>
|
||||
</property>
|
||||
<property name="windowTitle">
|
||||
<string>toolBar</string>
|
||||
</property>
|
||||
|
@ -378,6 +378,85 @@ p, li { white-space: pre-wrap; }
|
|||
</layout>
|
||||
</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">
|
||||
<property name="text">
|
||||
<string>使用教程</string>
|
||||
|
|
|
@ -4,17 +4,18 @@
|
|||
|
||||
namespace LAMPMainWidget {
|
||||
|
||||
GaodeNormalProvider::GaodeNormalProvider(QObject *parent)
|
||||
GaodeNormalProvider::GaodeNormalProvider(QObject* parent)
|
||||
: TmsProvider(parent) {
|
||||
initCache();
|
||||
}
|
||||
}
|
||||
|
||||
QString
|
||||
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
|
||||
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)" };
|
||||
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 {
|
||||
|
||||
PointXY
|
||||
MapCanvas::defaultMapCenter() {
|
||||
return PointXY{116.4074, 39.9042};
|
||||
}
|
||||
PointXY
|
||||
MapCanvas::defaultMapCenter() {
|
||||
return PointXY{ 116.4074, 39.9042 };
|
||||
}
|
||||
|
||||
MapCanvas::MapCanvas(QWidget *parent)
|
||||
MapCanvas::MapCanvas(QWidget* parent)
|
||||
: QGraphicsView(parent),
|
||||
mScene(nullptr),
|
||||
mMapExtent(),
|
||||
|
@ -36,6 +36,7 @@ MapCanvas::MapCanvas(QWidget *parent)
|
|||
mMapUpdateTimer(nullptr),
|
||||
mCurrentTool(nullptr),
|
||||
mMapTools() {
|
||||
|
||||
setAutoFillBackground(true);
|
||||
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||
|
@ -50,65 +51,65 @@ MapCanvas::MapCanvas(QWidget *parent)
|
|||
mMapUpdateTimer->start(200);
|
||||
setupTools();
|
||||
this->startTimer(1000);
|
||||
}
|
||||
}
|
||||
|
||||
MapCanvas::~MapCanvas() {
|
||||
MapCanvas::~MapCanvas() {
|
||||
mLayers.clear();
|
||||
delete mScene;
|
||||
delete mCurrentLayer;
|
||||
delete mMapUpdateTimer;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MapCanvas::mousePressEvent(QMouseEvent *event) {
|
||||
void
|
||||
MapCanvas::mousePressEvent(QMouseEvent* event) {
|
||||
if (mCurrentTool) {
|
||||
mCurrentTool->execute(event);
|
||||
}
|
||||
QGraphicsView::mousePressEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MapCanvas::mouseReleaseEvent(QMouseEvent *event) {
|
||||
void
|
||||
MapCanvas::mouseReleaseEvent(QMouseEvent* event) {
|
||||
if (mCurrentTool) {
|
||||
mCurrentTool->execute(event);
|
||||
}
|
||||
QGraphicsView::mouseReleaseEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MapCanvas::wheelEvent(QWheelEvent *event) {
|
||||
void
|
||||
MapCanvas::wheelEvent(QWheelEvent* event) {
|
||||
int delta = event->angleDelta().y() / 120;
|
||||
int zoom = zoomValue();
|
||||
zoom += delta;
|
||||
setZoomValue(zoom);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MapCanvas::resizeEvent(QResizeEvent *event) {
|
||||
void
|
||||
MapCanvas::resizeEvent(QResizeEvent* event) {
|
||||
updateViewExtent(true);
|
||||
}
|
||||
}
|
||||
|
||||
void MapCanvas::mouseMoveEvent(QMouseEvent *event)
|
||||
{
|
||||
void MapCanvas::mouseMoveEvent(QMouseEvent* event)
|
||||
{
|
||||
if (mCurrentTool) {
|
||||
mCurrentTool->execute(event);
|
||||
}
|
||||
QGraphicsView::mouseMoveEvent(event);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MapCanvas::refreshMap() {
|
||||
QMapIterator<QString, MapLayer *> iterator(mLayers);
|
||||
void
|
||||
MapCanvas::refreshMap() {
|
||||
QMapIterator<QString, MapLayer*> iterator(mLayers);
|
||||
while (iterator.hasNext()) {
|
||||
iterator.next();
|
||||
iterator.value()->map()->setViewExtent(mViewExtent);
|
||||
iterator.value()->update();
|
||||
}
|
||||
mScene->update();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MapCanvas::addLayer(MapLayer *const layer) {
|
||||
void
|
||||
MapCanvas::addLayer(MapLayer* const layer) {
|
||||
if (!layer)
|
||||
return;
|
||||
|
||||
|
@ -123,15 +124,15 @@ MapCanvas::addLayer(MapLayer *const layer) {
|
|||
}
|
||||
mScene->addItem(layer->map());
|
||||
refreshMap();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MapCanvas::setZoomValue(const int zoom) {
|
||||
void
|
||||
MapCanvas::setZoomValue(const int zoom) {
|
||||
mZoomValue = normalizeZoom(zoom);
|
||||
zoomChanged(mZoomValue);
|
||||
|
||||
/// 更新每个图层的zoom值
|
||||
QMapIterator<QString, MapLayer *> iterator(mLayers);
|
||||
QMapIterator<QString, MapLayer*> iterator(mLayers);
|
||||
while (iterator.hasNext()) {
|
||||
iterator.next();
|
||||
iterator.value()->setZoomValue(mZoomValue);
|
||||
|
@ -139,10 +140,10 @@ MapCanvas::setZoomValue(const int zoom) {
|
|||
|
||||
/// 更新可视区域的内容
|
||||
updateViewExtent(true);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MapCanvas::updateViewExtent(bool reset) {
|
||||
void
|
||||
MapCanvas::updateViewExtent(bool reset) {
|
||||
if (!mCurrentLayer) {
|
||||
qDebug() << "未设置当前图层,视图区域无法更新";
|
||||
return;
|
||||
|
@ -151,21 +152,23 @@ MapCanvas::updateViewExtent(bool reset) {
|
|||
if (reset) {
|
||||
/// 重置视图区域
|
||||
mScene->setSceneRect(mCurrentLayer->extent());
|
||||
QRectF testrect=mCurrentLayer->extent();
|
||||
QRectF testrect = mCurrentLayer->extent();
|
||||
mViewExtent.setRect(0, 0, 0, 0);
|
||||
mViewExtent.setSize(size());
|
||||
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();
|
||||
mViewExtent.translate(offset.x(), offset.y());
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
qDebug() << "视图区域更新 平移范围 x ,y "<<-mDragRect.width()<<" , "<<-mDragRect.height() ;
|
||||
/// 视图偏移并重置偏移属性
|
||||
mViewExtent.translate(-mDragRect.width(), -mDragRect.height());
|
||||
mDragRect.setRect(0, 0, 0, 0);
|
||||
|
||||
/// 更新地图可视区域中心点
|
||||
QPointF mapCenter = mViewExtent.center();
|
||||
PointXY crsCenter{mapCenter.x() * resolution(), mapCenter.y() * resolution()};
|
||||
PointXY crsCenter{ mapCenter.x() * resolution(), mapCenter.y() * resolution() };
|
||||
mMapCenter = mCrs->inverse(crsCenter);
|
||||
mapCenterChanged(mMapCenter);
|
||||
}
|
||||
|
@ -173,17 +176,17 @@ MapCanvas::updateViewExtent(bool reset) {
|
|||
/// 刷新地图
|
||||
centerOn(mViewExtent.center());
|
||||
refreshMap();
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MapCanvas::setCrs(const CRS *const crs) {
|
||||
void
|
||||
MapCanvas::setCrs(const CRS* const crs) {
|
||||
mCrs = crs;
|
||||
crsChanged();
|
||||
updateViewExtent(true);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MapCanvas::setCurrentLayer(const QString &id) {
|
||||
void
|
||||
MapCanvas::setCurrentLayer(const QString& id) {
|
||||
if (!mLayers.contains(id)) {
|
||||
qWarning() << "未添加图层=>" << id;
|
||||
return;
|
||||
|
@ -193,58 +196,60 @@ MapCanvas::setCurrentLayer(const QString &id) {
|
|||
setCrs(&mCurrentLayer->crs());
|
||||
}
|
||||
updateViewExtent(true);
|
||||
}
|
||||
}
|
||||
|
||||
double
|
||||
MapCanvas::scale() const {
|
||||
double
|
||||
MapCanvas::scale() const {
|
||||
return logicalDpiX() * resolution() * 39.37 / 100;;
|
||||
}
|
||||
}
|
||||
|
||||
double
|
||||
MapCanvas::resolution() const {
|
||||
double
|
||||
MapCanvas::resolution() const {
|
||||
if (!mCurrentLayer) {
|
||||
qWarning() << "未设置当前图层,无法获取分辨率";
|
||||
return 0;
|
||||
}
|
||||
|
||||
return mCurrentLayer->resolution();
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
MapCanvas::zoomValue() const {
|
||||
int
|
||||
MapCanvas::zoomValue() const {
|
||||
if (!mCurrentLayer) {
|
||||
qWarning() << "未设置当前图层,默认返回zoom值为0";
|
||||
return 0;
|
||||
}
|
||||
|
||||
return mCurrentLayer->zoomValue();
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
MapCanvas::normalizeZoom(const int zoom) const {
|
||||
int
|
||||
MapCanvas::normalizeZoom(const int zoom) const {
|
||||
int z{};
|
||||
if (zoom <= kMinZoomValue) {
|
||||
z = kMinZoomValue;
|
||||
} else if (z >= kMaxZoomValue) {
|
||||
}
|
||||
else if (z >= kMaxZoomValue) {
|
||||
z = kMaxZoomValue;
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
z = zoom;
|
||||
}
|
||||
|
||||
return z;
|
||||
}
|
||||
}
|
||||
|
||||
PointXY
|
||||
MapCanvas::pixel2Lonlat(const QPointF &point) const {
|
||||
QPointF scenePoint = mapToScene(QPoint{static_cast<int>(point.x()), static_cast<int>(point.y())});
|
||||
QPointF mapPoint{scenePoint.x() * resolution(), scenePoint.y() * resolution()};
|
||||
PointXY crsPoint = mCrs->inverse(PointXY{mapPoint});
|
||||
PointXY
|
||||
MapCanvas::pixel2Lonlat(const QPointF& point) const {
|
||||
QPointF scenePoint = mapToScene(QPoint{ static_cast<int>(point.x()), static_cast<int>(point.y()) });
|
||||
QPointF mapPoint{ scenePoint.x() * resolution(), scenePoint.y() * resolution() };
|
||||
PointXY crsPoint = mCrs->inverse(PointXY{ mapPoint });
|
||||
qDebug() << "坐标装换=>{" << point << "=>" << crsPoint << "}";
|
||||
return crsPoint;
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
MapCanvas::selectTool(const QString &tool) {
|
||||
bool
|
||||
MapCanvas::selectTool(const QString& tool) {
|
||||
if (!mMapTools.contains(tool)) {
|
||||
qWarning() << QString("%1工具不存在").arg(tool);
|
||||
return false;
|
||||
|
@ -258,19 +263,19 @@ MapCanvas::selectTool(const QString &tool) {
|
|||
toolPtr->setup();
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
void MapCanvas::timerEvent(QTimerEvent *event)
|
||||
{
|
||||
MapToolAddplane *maptoolAddplane=dynamic_cast<MapToolAddplane*>(mMapTools["addplane_tool"]);
|
||||
QList<MapAutoplane*> planes=maptoolAddplane->getPlanes();
|
||||
foreach(MapAutoplane *plane,planes){
|
||||
void MapCanvas::timerEvent(QTimerEvent* event)
|
||||
{
|
||||
MapToolAddplane* maptoolAddplane = dynamic_cast<MapToolAddplane*>(mMapTools["addplane_tool"]);
|
||||
QList<MapAutoplane*> planes = maptoolAddplane->getPlanes();
|
||||
foreach(MapAutoplane * plane, planes) {
|
||||
plane->updatePos();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MapCanvas::setupTools() {
|
||||
void
|
||||
MapCanvas::setupTools() {
|
||||
auto panTool = new MapToolPan(this);
|
||||
mMapTools.insert(panTool->id(), panTool);
|
||||
|
||||
|
@ -283,19 +288,19 @@ MapCanvas::setupTools() {
|
|||
auto selectTool = new MapToolSelect(this);
|
||||
mMapTools.insert(selectTool->id(), selectTool);
|
||||
|
||||
auto drawlineTool=new MapToolDrawline(this);
|
||||
mMapTools.insert(drawlineTool->id(),drawlineTool);
|
||||
auto drawlineTool = new MapToolDrawline(this);
|
||||
mMapTools.insert(drawlineTool->id(), drawlineTool);
|
||||
|
||||
auto drawareTool=new MapToolDrawarea(this);
|
||||
mMapTools.insert(drawareTool->id(),drawareTool);
|
||||
auto drawareTool = new MapToolDrawarea(this);
|
||||
mMapTools.insert(drawareTool->id(), drawareTool);
|
||||
|
||||
auto addplaneTool=new MapToolAddplane(this);
|
||||
mMapTools.insert(addplaneTool->id(),addplaneTool);
|
||||
auto addplaneTool = new MapToolAddplane(this);
|
||||
mMapTools.insert(addplaneTool->id(), addplaneTool);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -20,13 +20,13 @@
|
|||
#include <maptool.h>
|
||||
|
||||
namespace LAMPMainWidget {
|
||||
class MapLayer;
|
||||
class MapTool;
|
||||
/**
|
||||
class MapLayer;
|
||||
class MapTool;
|
||||
/**
|
||||
* 地图容器类,继承自QGraphicsView。
|
||||
* 整个地图的渲染都是基于“Qt GraphicsView Framework”设计。
|
||||
*/
|
||||
class MapCanvas : public QGraphicsView {
|
||||
class MapCanvas : public QGraphicsView {
|
||||
Q_OBJECT
|
||||
|
||||
signals:
|
||||
|
@ -41,7 +41,7 @@ class MapCanvas : public QGraphicsView {
|
|||
friend class MapToolSelect;
|
||||
|
||||
public:
|
||||
explicit MapCanvas(QWidget *parent = nullptr);
|
||||
explicit MapCanvas(QWidget* parent = nullptr);
|
||||
~MapCanvas() override;
|
||||
|
||||
public:
|
||||
|
@ -54,7 +54,7 @@ class MapCanvas : public QGraphicsView {
|
|||
* 向容器中添加图层,默认情况下容器会使用首个图层的坐标系作为自身的坐标系
|
||||
* @param layer 图层对象
|
||||
*/
|
||||
void addLayer(MapLayer *layer);
|
||||
void addLayer(MapLayer* layer);
|
||||
|
||||
/**
|
||||
* 获取地图容器的比例尺
|
||||
|
@ -84,48 +84,48 @@ class MapCanvas : public QGraphicsView {
|
|||
* 获取容器当前所显示的地图区域
|
||||
* @return 当前所显示地图区域
|
||||
*/
|
||||
const QRectF &viewExtent() const { return mViewExtent; }
|
||||
const QRectF& viewExtent() const { return mViewExtent; }
|
||||
|
||||
/**
|
||||
* 设置容器坐标系,设置过后会更新所有图层坐标系。
|
||||
* 默认会对容器中的图层做投影变换处理
|
||||
* @param crs 坐标系
|
||||
*/
|
||||
void setCrs(const CRS *crs);
|
||||
void setCrs(const CRS* crs);
|
||||
|
||||
/**
|
||||
* 获取地图容器的坐标系
|
||||
* @return 地图容器坐标系
|
||||
*/
|
||||
const CRS &crs() const { return *mCrs; }
|
||||
const CRS& crs() const { return *mCrs; }
|
||||
|
||||
/**
|
||||
* 设置地图容器的当前选中图层
|
||||
* @param id 图层的id
|
||||
*/
|
||||
void setCurrentLayer(const QString &id);
|
||||
void setCurrentLayer(const QString& id);
|
||||
|
||||
/**
|
||||
* 获取地图容器当前选中图层
|
||||
* @return 当前选中图层
|
||||
*/
|
||||
const MapLayer *currentLayer() { return mCurrentLayer; }
|
||||
const MapLayer* currentLayer() { return mCurrentLayer; }
|
||||
|
||||
/**
|
||||
* 获取地图当前视图中心点经纬度坐标
|
||||
* @return 视图中心点经纬度坐标
|
||||
*/
|
||||
const PointXY &mapCenter() const { return mMapCenter; }
|
||||
const PointXY& mapCenter() const { return mMapCenter; }
|
||||
|
||||
/**
|
||||
* 选择地图工具
|
||||
* @param tool 工具名称
|
||||
* @return 是否选择成功
|
||||
*/
|
||||
bool selectTool(const QString &tool);
|
||||
bool selectTool(const QString& tool);
|
||||
|
||||
|
||||
void timerEvent(QTimerEvent *event);
|
||||
void timerEvent(QTimerEvent* event);
|
||||
|
||||
protected:
|
||||
/**
|
||||
|
@ -139,7 +139,7 @@ class MapCanvas : public QGraphicsView {
|
|||
* @param point 屏幕上点
|
||||
* @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;
|
||||
|
||||
protected:
|
||||
void mousePressEvent(QMouseEvent *event) override;
|
||||
void mouseReleaseEvent(QMouseEvent *event) override;
|
||||
void wheelEvent(QWheelEvent *event) override;
|
||||
void resizeEvent(QResizeEvent *event) override;
|
||||
void mouseMoveEvent(QMouseEvent *event) override;
|
||||
void mousePressEvent(QMouseEvent* event) override;
|
||||
void mouseReleaseEvent(QMouseEvent* event) override;
|
||||
void wheelEvent(QWheelEvent* event) override;
|
||||
void resizeEvent(QResizeEvent* event) override;
|
||||
void mouseMoveEvent(QMouseEvent* event) override;
|
||||
|
||||
protected:
|
||||
QGraphicsScene *mScene;
|
||||
QGraphicsScene* mScene;
|
||||
QRectF mMapExtent;
|
||||
QRectF mViewExtent;
|
||||
QRectF mDragRect;
|
||||
bool mIsDragging;
|
||||
QMap<QString, MapLayer *> mLayers;
|
||||
MapLayer *mCurrentLayer;
|
||||
const CRS *mCrs;
|
||||
QMap<QString, MapLayer*> mLayers;
|
||||
MapLayer* mCurrentLayer;
|
||||
const CRS* mCrs;
|
||||
PointXY mMapCenter;
|
||||
int mZoomValue;
|
||||
PointXY mLastXY;
|
||||
QTimer *mMapUpdateTimer;
|
||||
MapTool *mCurrentTool;
|
||||
QHash<QString, MapTool *> mMapTools;
|
||||
QTimer* mMapUpdateTimer;
|
||||
MapTool* mCurrentTool;
|
||||
QHash<QString, MapTool*> mMapTools;
|
||||
|
||||
private:
|
||||
const static int kDefaultZoomValue{8};
|
||||
static const int kMaxZoomValue{20};
|
||||
static const int kMinZoomValue{1};
|
||||
const static int kDefaultZoomValue{ 8 };
|
||||
static const int kMaxZoomValue{ 20 };
|
||||
static const int kMinZoomValue{ 1 };
|
||||
|
||||
protected:
|
||||
// 设置默认地图中心点
|
||||
static PointXY defaultMapCenter();
|
||||
};
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -10,28 +10,28 @@
|
|||
|
||||
namespace LAMPMainWidget {
|
||||
|
||||
void
|
||||
MapCanvasMap::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {
|
||||
void
|
||||
MapCanvasMap::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget* widget) {
|
||||
if (!mLayer->provider().hasContent()) {
|
||||
return;
|
||||
}
|
||||
painter->drawImage(mViewExtent.topLeft(), mLayer->provider().preparedImage());
|
||||
}
|
||||
}
|
||||
|
||||
QRectF
|
||||
MapCanvasMap::boundingRect() const {
|
||||
QRectF
|
||||
MapCanvasMap::boundingRect() const {
|
||||
auto width = mViewExtent.size().width();
|
||||
auto height = mViewExtent.size().height();
|
||||
return mViewExtent + QMarginsF(1024, 1024, 1024, 1024);
|
||||
}
|
||||
}
|
||||
|
||||
void MapCanvasMap::setViewExtent(const QRectF &rect) {
|
||||
void MapCanvasMap::setViewExtent(const QRectF& rect) {
|
||||
//qDebug() << "更新图层显示对象边界=>" << rect;
|
||||
if (rect != mViewExtent) {
|
||||
prepareGeometryChange();
|
||||
mViewExtent = rect;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -7,10 +7,10 @@
|
|||
|
||||
namespace LAMPMainWidget {
|
||||
|
||||
MapLayer::MapLayer(
|
||||
const QString &id,
|
||||
LAMPMainWidget::CRS *crs,
|
||||
LAMPMainWidget::MapCanvas *mapCanvas)
|
||||
MapLayer::MapLayer(
|
||||
const QString& id,
|
||||
LAMPMainWidget::CRS* crs,
|
||||
LAMPMainWidget::MapCanvas* mapCanvas)
|
||||
: mId(id),
|
||||
mCrs(crs),
|
||||
mZValue(-1),
|
||||
|
@ -19,21 +19,21 @@ MapLayer::MapLayer(
|
|||
mMapCanvasMap(new MapCanvasMap(this)),
|
||||
mMapCanvas(mapCanvas) {
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
MapLayer::~MapLayer() {
|
||||
MapLayer::~MapLayer() {
|
||||
delete mCrs;
|
||||
delete mProvider;
|
||||
}
|
||||
}
|
||||
|
||||
MapLayer::MapLayer(const MapLayer &other) {
|
||||
MapLayer::MapLayer(const MapLayer& other) {
|
||||
mId = other.mId;
|
||||
mZValue = other.mZValue;
|
||||
mCrs = other.mCrs;
|
||||
mMapCanvas = other.mMapCanvas;
|
||||
}
|
||||
}
|
||||
|
||||
MapLayer::MapLayer(MapLayer &&other) noexcept {
|
||||
MapLayer::MapLayer(MapLayer&& other) noexcept {
|
||||
mId = other.mId;
|
||||
mZValue = other.mZValue;
|
||||
mCrs = other.mCrs;
|
||||
|
@ -43,10 +43,10 @@ MapLayer::MapLayer(MapLayer &&other) noexcept {
|
|||
other.mCrs = nullptr;
|
||||
other.mZValue = 0;
|
||||
other.mMapCanvas = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
MapLayer &
|
||||
MapLayer::operator=(const MapLayer &other) {
|
||||
MapLayer&
|
||||
MapLayer::operator=(const MapLayer& other) {
|
||||
if (this != &other) {
|
||||
mId = other.mId;
|
||||
mZValue = other.mZValue;
|
||||
|
@ -55,10 +55,10 @@ MapLayer::operator=(const MapLayer &other) {
|
|||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
}
|
||||
|
||||
MapLayer &
|
||||
MapLayer::operator=(MapLayer &&other) noexcept {
|
||||
MapLayer&
|
||||
MapLayer::operator=(MapLayer&& other) noexcept {
|
||||
if (this != &other) {
|
||||
mId = other.mId;
|
||||
mZValue = other.mZValue;
|
||||
|
@ -72,11 +72,11 @@ MapLayer::operator=(MapLayer &&other) noexcept {
|
|||
}
|
||||
|
||||
return *this;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MapLayer::update() {
|
||||
if(!isVisible()){
|
||||
void
|
||||
MapLayer::update() {
|
||||
if (!isVisible()) {
|
||||
qDebug() << id() << "=>图层不显示,跳过刷新操作";
|
||||
mMapCanvasMap->hide();
|
||||
return;
|
||||
|
@ -84,7 +84,7 @@ MapLayer::update() {
|
|||
//qDebug() << "刷新图层内容=>" << mMapCanvas->viewExtent()<<QDateTime::currentDateTime()<<"zoom"<<mZoomValue;
|
||||
mProvider->createTask(mMapCanvas->viewExtent(), mZoomValue);
|
||||
mMapCanvasMap->show();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -9,26 +9,26 @@
|
|||
#include <mapcanvasmap.h>
|
||||
|
||||
namespace LAMPMainWidget {
|
||||
class MapCanvas;
|
||||
class MapCanvas;
|
||||
|
||||
/*
|
||||
/*
|
||||
* 地图容器中的图层,属于数据的集合并不包含任何显示需要的数据
|
||||
*/
|
||||
class MapLayer {
|
||||
class MapLayer {
|
||||
public:
|
||||
MapLayer(const QString &id, CRS *crs, MapCanvas *mapCanvas);
|
||||
MapLayer(const MapLayer &other);
|
||||
MapLayer(MapLayer &&other) noexcept;
|
||||
MapLayer(const QString& id, CRS* crs, MapCanvas* mapCanvas);
|
||||
MapLayer(const MapLayer& other);
|
||||
MapLayer(MapLayer&& other) noexcept;
|
||||
virtual ~MapLayer();
|
||||
MapLayer &operator=(const MapLayer &other);
|
||||
MapLayer &operator=(MapLayer &&other) noexcept;
|
||||
MapLayer& operator=(const MapLayer& other);
|
||||
MapLayer& operator=(MapLayer&& other) noexcept;
|
||||
|
||||
public:
|
||||
/*
|
||||
* 获取图层的id
|
||||
* @return 图层id字符串
|
||||
*/
|
||||
const QString &id() const { return mId; }
|
||||
const QString& id() const { return mId; }
|
||||
|
||||
/*
|
||||
* 获取图层的显示z值
|
||||
|
@ -40,25 +40,25 @@ class MapLayer {
|
|||
* 获取图层的坐标系
|
||||
* @return 图层的坐标系
|
||||
*/
|
||||
const CRS &crs() const { return *mCrs; }
|
||||
const CRS& crs() const { return *mCrs; }
|
||||
|
||||
/*
|
||||
* 获取图层所属的map容器
|
||||
* @return 图层所属的map容器
|
||||
*/
|
||||
const MapCanvas &mapCanvas() const { return *mMapCanvas; }
|
||||
const MapCanvas& mapCanvas() const { return *mMapCanvas; }
|
||||
|
||||
/*
|
||||
* 获取图层的数据提供对象
|
||||
* @return 图层的数据提供对象
|
||||
*/
|
||||
const LayerProvider &provider() const { return *mProvider; }
|
||||
const LayerProvider& provider() const { return *mProvider; }
|
||||
|
||||
/*
|
||||
* 设置图层的id
|
||||
* @param id 图层id
|
||||
*/
|
||||
void setId(const QString &id) { mId = id; }
|
||||
void setId(const QString& id) { mId = id; }
|
||||
|
||||
/*
|
||||
* 设置图层的z值
|
||||
|
@ -70,13 +70,13 @@ class MapLayer {
|
|||
* 设置图层的坐标系
|
||||
* @param crs 图层坐标系
|
||||
*/
|
||||
void setCrs(CRS *const crs) { mCrs = crs; }
|
||||
void setCrs(CRS* const crs) { mCrs = crs; }
|
||||
|
||||
/*
|
||||
* 设置图层的数据提供对象
|
||||
* @param provider 图层的数据提供对象
|
||||
*/
|
||||
void setProvider(LayerProvider *const provider) { mProvider = provider; }
|
||||
void setProvider(LayerProvider* const provider) { mProvider = provider; }
|
||||
|
||||
/*
|
||||
* 获取图层的pixel:m比例尺
|
||||
|
@ -106,25 +106,25 @@ class MapLayer {
|
|||
* 设置图层所属的地图容器
|
||||
* @param map 图层所属的地图容器
|
||||
*/
|
||||
void setMap(MapCanvasMap *map) { mMapCanvasMap = map; }
|
||||
void setMap(MapCanvasMap* map) { mMapCanvasMap = map; }
|
||||
|
||||
/*
|
||||
* 获取图层的显示图元,这是图层最终的显示对象
|
||||
* @return 图层的显示图元
|
||||
*/
|
||||
MapCanvasMap *map() const { return mMapCanvasMap; }
|
||||
MapCanvasMap* map() const { return mMapCanvasMap; }
|
||||
|
||||
/*
|
||||
* 判断图层是否可显示
|
||||
* @return 图层是否可显示,true显示,false则不显示
|
||||
*/
|
||||
bool isVisible() const {return mIsVisible;}
|
||||
bool isVisible() const { return mIsVisible; }
|
||||
|
||||
/*
|
||||
* 设值图层的可显示属性
|
||||
* @param visible true为显示,false则不显示
|
||||
*/
|
||||
void setVisiblity(bool visible) {mIsVisible = visible;}
|
||||
void setVisiblity(bool visible) { mIsVisible = visible; }
|
||||
|
||||
/*
|
||||
* 刷新图层内容
|
||||
|
@ -134,16 +134,16 @@ class MapLayer {
|
|||
|
||||
protected:
|
||||
QString mId;
|
||||
CRS *mCrs;
|
||||
CRS* mCrs;
|
||||
int mZValue;
|
||||
int mZoomValue;
|
||||
LayerProvider *mProvider;
|
||||
MapCanvasMap *mMapCanvasMap;
|
||||
const MapCanvas *mMapCanvas;
|
||||
bool mIsVisible{false};
|
||||
LayerProvider* mProvider;
|
||||
MapCanvasMap* mMapCanvasMap;
|
||||
const MapCanvas* mMapCanvas;
|
||||
bool mIsVisible{ false };
|
||||
|
||||
private:
|
||||
const static int kDefaultZoomValue{10};
|
||||
};
|
||||
const static int kDefaultZoomValue{ 10 };
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -3,13 +3,13 @@
|
|||
#include <QtGui/QMouseEvent>
|
||||
|
||||
namespace LAMPMainWidget {
|
||||
class MapCanvas;
|
||||
/**
|
||||
class MapCanvas;
|
||||
/**
|
||||
* 地图的处理工具
|
||||
*/
|
||||
class MapTool {
|
||||
class MapTool {
|
||||
public:
|
||||
MapTool(MapCanvas *mapCanvas) : mMapCanvas(mapCanvas) {}
|
||||
MapTool(MapCanvas* mapCanvas) : mMapCanvas(mapCanvas) {}
|
||||
virtual ~MapTool();
|
||||
|
||||
public:
|
||||
|
@ -17,7 +17,7 @@ class MapTool {
|
|||
* 具体的工具处理程序
|
||||
* @param event 鼠标事件
|
||||
*/
|
||||
virtual void execute(QMouseEvent *event) = 0;
|
||||
virtual void execute(QMouseEvent* event) = 0;
|
||||
|
||||
/**
|
||||
* 提示将使用工具,此方法中可以为工具的环境做一些准备
|
||||
|
@ -36,7 +36,7 @@ class MapTool {
|
|||
virtual QString id() = 0;
|
||||
|
||||
protected:
|
||||
MapCanvas *mMapCanvas;
|
||||
};
|
||||
MapCanvas* mMapCanvas;
|
||||
};
|
||||
|
||||
}
|
||||
|
|
|
@ -6,9 +6,9 @@
|
|||
|
||||
namespace LAMPMainWidget {
|
||||
|
||||
void
|
||||
MapToolPan::execute(QMouseEvent *event) {
|
||||
if(!(event->button() & Qt::LeftButton)){
|
||||
void
|
||||
MapToolPan::execute(QMouseEvent* event) {
|
||||
if (!(event->button() & Qt::LeftButton)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -19,26 +19,26 @@ MapToolPan::execute(QMouseEvent *event) {
|
|||
|
||||
if (QEvent::MouseButtonRelease == type) {
|
||||
mDragEndPos = event->pos();
|
||||
QRectF dragRect{mDragStartPos, mDragEndPos};
|
||||
QRectF dragRect{ mDragStartPos, mDragEndPos };
|
||||
mMapCanvas->mDragRect = dragRect;
|
||||
mMapCanvas->updateViewExtent();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
MapToolPan::setup() {
|
||||
void
|
||||
MapToolPan::setup() {
|
||||
mMapCanvas->setDragMode(MapCanvas::DragMode::ScrollHandDrag);
|
||||
}
|
||||
}
|
||||
|
||||
QString
|
||||
MapToolPan::id() {
|
||||
return QString{"pan_tool"};
|
||||
}
|
||||
QString
|
||||
MapToolPan::id() {
|
||||
return QString{ "pan_tool" };
|
||||
}
|
||||
|
||||
void
|
||||
MapToolPan::deSetup() {
|
||||
void
|
||||
MapToolPan::deSetup() {
|
||||
mMapCanvas->setDragMode(MapCanvas::DragMode::NoDrag);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -10,8 +10,8 @@ OSTNormalProvider::OSTNormalProvider(QObject *parent)
|
|||
}
|
||||
|
||||
QString
|
||||
OSTNormalProvider::tileUrl(const LAMPMainWidget::PointXY &pos, int zoom) const {
|
||||
QString urlFmt = {"https://tile.openstreetmap.org/%1/%2/%3.png"};
|
||||
OSTNormalProvider::tileUrl(const LAMPMainWidget::PointXY& pos, int zoom) const {
|
||||
QString urlFmt = { "https://tile.openstreetmap.org/%1/%2/%3.png" };
|
||||
return QString(urlFmt).arg(zoom).arg(pos.y()).arg(pos.x());
|
||||
}
|
||||
//https://tile.openstreetmap.org/{z}/{x}/{y}.png
|
||||
|
|
|
@ -20,7 +20,7 @@ namespace LAMPMainWidget
|
|||
void
|
||||
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 tileSize = provider->tileSize();
|
||||
|
||||
|
@ -33,12 +33,12 @@ namespace LAMPMainWidget
|
|||
}
|
||||
generateSuccessRow();
|
||||
|
||||
ImgWriter imgWriter{mTaskInfo.taskPath, imgSize};
|
||||
ImgWriter imgWriter{ mTaskInfo.taskPath, imgSize };
|
||||
QByteArray tileData{};
|
||||
Network web{};
|
||||
auto item = tiles.constBegin();
|
||||
auto count = tiles.count();
|
||||
int completed{0};
|
||||
int completed{ 0 };
|
||||
for (; item != tiles.constEnd(); ++item) {
|
||||
tileData = web.httpsRequest(item.value());
|
||||
if (tileData.isEmpty()) {
|
||||
|
@ -53,8 +53,7 @@ namespace LAMPMainWidget
|
|||
double progress = static_cast<double>(completed) / count;
|
||||
auto progessStr = QString("%1").arg(progress * 100);
|
||||
mTaskInfo.display->takeItem(mRowId, 4);
|
||||
mTaskInfo.display->setItem(mRowId, 4,
|
||||
new QTableWidgetItem(QString("%1").arg(progress * 100)));
|
||||
mTaskInfo.display->setItem(mRowId, 4,new QTableWidgetItem(QString("%1").arg(progress * 100)));
|
||||
// mTaskInfo.display->resizeColumnsToContents();
|
||||
// mTaskInfo.display->horizontalHeader()->setStretchLastSection(true);
|
||||
}
|
||||
|
@ -99,7 +98,7 @@ namespace LAMPMainWidget
|
|||
|
||||
TaskWindow::TaskWindow(QWidget* parent)
|
||||
: mUi(new Ui::TaskWindow),
|
||||
mParent(dynamic_cast<RasterMainWidget *>(parent)),
|
||||
mParent(dynamic_cast<RasterMainWidget*>(parent)),
|
||||
mSavePath(),
|
||||
QDialog(parent)
|
||||
{
|
||||
|
@ -117,7 +116,7 @@ namespace LAMPMainWidget
|
|||
TaskWindow::setupWindow()
|
||||
{
|
||||
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 maxZoom = currentLayer->maxZoom();
|
||||
|
@ -156,7 +155,7 @@ namespace LAMPMainWidget
|
|||
mZoomValue,
|
||||
mParent->mMapConvas->currentLayer(),
|
||||
mParent->getTaskTable()
|
||||
/*mParent->mUi->taskTable*/};
|
||||
/*mParent->mUi->taskTable*/ };
|
||||
|
||||
auto task = new DownloadTask(tileInfo);
|
||||
QThreadPool::globalInstance()->start(task);
|
||||
|
@ -166,7 +165,7 @@ namespace LAMPMainWidget
|
|||
void
|
||||
TaskWindow::setupSaveDir()
|
||||
{
|
||||
auto saveDir = QFileDialog::getExistingDirectory(dynamic_cast<QWidget *>(this), "存储路径选择");
|
||||
auto saveDir = QFileDialog::getExistingDirectory(dynamic_cast<QWidget*>(this), "存储路径选择");
|
||||
if (saveDir.isEmpty()) {
|
||||
qWarning() << "未选择存储路径";
|
||||
return;
|
||||
|
@ -187,12 +186,12 @@ namespace LAMPMainWidget
|
|||
TaskWindow::taskInfoCheck()
|
||||
{
|
||||
if (mTaskName.isEmpty()) {
|
||||
QMessageBox::critical(dynamic_cast<QWidget *>(this), "错误", "任务名称为空");
|
||||
QMessageBox::critical(dynamic_cast<QWidget*>(this), "错误", "任务名称为空");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (mSavePath.isEmpty()) {
|
||||
QMessageBox::critical(dynamic_cast<QWidget *>(this), "错误", "存储路径为空");
|
||||
QMessageBox::critical(dynamic_cast<QWidget*>(this), "错误", "存储路径为空");
|
||||
return false;
|
||||
}
|
||||
|
||||
|
|
|
@ -10,17 +10,17 @@
|
|||
|
||||
namespace LAMPMainWidget {
|
||||
|
||||
TmsLayer::TmsLayer(LAMPMainWidget::TmsProviders provider,
|
||||
const QString &id,
|
||||
LAMPMainWidget::MapCanvas *mapCanvas,
|
||||
LAMPMainWidget::CRS *crs)
|
||||
TmsLayer::TmsLayer(LAMPMainWidget::TmsProviders provider,
|
||||
const QString& id,
|
||||
LAMPMainWidget::MapCanvas* mapCanvas,
|
||||
LAMPMainWidget::CRS* crs)
|
||||
: MapLayer(id, crs, mapCanvas) {
|
||||
setProvider(TmsProviderFactory::create(provider));
|
||||
}
|
||||
}
|
||||
|
||||
double
|
||||
TmsLayer::resolution() const {
|
||||
auto pd = dynamic_cast<const TmsProvider *>(&provider());
|
||||
double
|
||||
TmsLayer::resolution() const {
|
||||
auto pd = dynamic_cast<const TmsProvider*>(&provider());
|
||||
auto sz = pd->tileSize();
|
||||
double length = crs().extent().width();
|
||||
double result = length / ((power2(zoomValue())) * sz.width());
|
||||
|
@ -30,40 +30,43 @@ TmsLayer::resolution() const {
|
|||
#endif
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
QRectF
|
||||
TmsLayer::extent() const {
|
||||
auto pd = dynamic_cast<const TmsProvider *>(&provider());
|
||||
QRectF
|
||||
TmsLayer::extent() const {
|
||||
auto pd = dynamic_cast<const TmsProvider*>(&provider());
|
||||
QSize sz = pd->tileSize();
|
||||
|
||||
int width = power2(zoomValue()) * sz.width();
|
||||
int height = power2(zoomValue()) * sz.height();
|
||||
|
||||
//#ifdef DEBUG
|
||||
//#ifdef DEBUG
|
||||
// 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
|
||||
TmsLayer::setZoomValue(int zoom) {
|
||||
void
|
||||
TmsLayer::setZoomValue(int zoom) {
|
||||
int zoomValue{};
|
||||
if (zoom <= minZoom()) {
|
||||
zoomValue = minZoom();
|
||||
} else if (zoom >= maxZoom()) {
|
||||
}
|
||||
else if (zoom >= maxZoom()) {
|
||||
zoomValue = maxZoom();
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
zoomValue = zoom;
|
||||
}
|
||||
|
||||
mZoomValue = zoomValue;
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
TmsLayer::parseTiles(const QRectF &rect, int zoom, QHash<QPoint, QString> &tiles, QSize &size) const {
|
||||
auto pd = dynamic_cast<const TmsProvider *>(&provider());
|
||||
bool
|
||||
TmsLayer::parseTiles(const QRectF& rect, int zoom, QHash<QPoint, QString>& tiles, QSize& size) const {
|
||||
|
||||
auto pd = dynamic_cast<const TmsProvider*>(&provider());
|
||||
auto tileSize = pd->tileSize();
|
||||
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 yMin = qFloor(mapLeftTop.y() / tileSize.height());
|
||||
auto yMax = qFloor(mapRightBottom.y() / tileSize.height());
|
||||
if((xMin > xMax) || (yMin > yMax)){
|
||||
if ((xMin > xMax) || (yMin > yMax)) {
|
||||
qDebug() << "下载区边界错误";
|
||||
return false;
|
||||
}
|
||||
|
@ -92,6 +95,6 @@ TmsLayer::parseTiles(const QRectF &rect, int zoom, QHash<QPoint, QString> &tiles
|
|||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ namespace LAMPMainWidget
|
|||
mImage(nullptr)
|
||||
{
|
||||
if (!QFile::exists(mDbName)) {
|
||||
QFile dbFile{mDbName};
|
||||
QFile dbFile{ mDbName };
|
||||
dbFile.open(QIODevice::ReadWrite);
|
||||
dbFile.close();
|
||||
}
|
||||
|
@ -52,7 +52,7 @@ namespace LAMPMainWidget
|
|||
return false;
|
||||
}
|
||||
|
||||
QSqlQuery sql{mDbConn};
|
||||
QSqlQuery sql{ mDbConn };
|
||||
if (!mDbConn.tables().contains(mTableName)) {
|
||||
sql.prepare(QString("create table %1 ("
|
||||
"id integer primary key autoincrement,"
|
||||
|
@ -76,7 +76,7 @@ namespace LAMPMainWidget
|
|||
{
|
||||
QByteArray res{};
|
||||
mDbConn.open();
|
||||
QSqlQuery select{mDbConn};
|
||||
QSqlQuery select{ mDbConn };
|
||||
select.prepare(QString("select data from %1 "
|
||||
"where provider = :provider "
|
||||
"and zoom = :zoom "
|
||||
|
@ -109,7 +109,7 @@ namespace LAMPMainWidget
|
|||
return false;
|
||||
}
|
||||
mDbConn.open();
|
||||
QSqlQuery sql{mDbConn};
|
||||
QSqlQuery sql{ mDbConn };
|
||||
sql.prepare(QString{
|
||||
"insert into %1 (provider, zoom, position, data)"
|
||||
"values( :provider, :zoom, :position, :data)"
|
||||
|
@ -153,11 +153,11 @@ namespace LAMPMainWidget
|
|||
for (int i = xMin; i <= xMax; ++i) {
|
||||
for (int j = yMin; j <= yMax; ++j) {
|
||||
TileInfo tile{};
|
||||
tile.index = QPointF{i - xMin - xOffset, j - yMin - yOffset};
|
||||
tile.position = QPoint{i, j};
|
||||
tile.index = QPointF{ i - xMin - xOffset, j - yMin - yOffset };
|
||||
tile.position = QPoint{ i, j };
|
||||
tile.zoom = zoom;
|
||||
tile.coord = QPoint{i - xMin, j - yMin};
|
||||
tile.url = tileUrl(PointXY{static_cast<double>(i), static_cast<double>(j)}, zoom);
|
||||
tile.coord = QPoint{ i - xMin, j - yMin };
|
||||
tile.url = tileUrl(PointXY{ static_cast<double>(i), static_cast<double>(j) }, zoom);
|
||||
auto tileData = getCache(tile.position, tile.zoom);
|
||||
if (!tileData.isEmpty()) {
|
||||
tile.data = tileData;
|
||||
|
@ -178,7 +178,7 @@ namespace LAMPMainWidget
|
|||
if (!cacheContains(tile.position, tile.zoom)) {
|
||||
addCache(tile.position, tile.zoom, tile.data);
|
||||
}
|
||||
QPainter painter{mImage};
|
||||
QPainter painter{ mImage };
|
||||
QImage img = QImage::fromData(tile.data);
|
||||
if (img.isNull()) {
|
||||
return;
|
||||
|
@ -193,7 +193,7 @@ namespace LAMPMainWidget
|
|||
void
|
||||
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()) {
|
||||
mImage = new QImage(imgSize, QImage::Format_RGB32);
|
||||
}
|
||||
|
|
|
@ -5,16 +5,17 @@
|
|||
|
||||
namespace LAMPMainWidget {
|
||||
|
||||
QHash<TmsProviders, LayerProvider *> TmsProviderFactory::mProviders{};
|
||||
QHash<TmsProviders, LayerProvider*> TmsProviderFactory::mProviders{};
|
||||
|
||||
LayerProvider *
|
||||
TmsProviderFactory::create(LAMPMainWidget::TmsProviders provider) {
|
||||
LayerProvider *result = nullptr;
|
||||
LayerProvider*
|
||||
TmsProviderFactory::create(LAMPMainWidget::TmsProviders provider) {
|
||||
LayerProvider* result = nullptr;
|
||||
switch (provider) {
|
||||
case OSTNormalMap:
|
||||
if (mProviders.contains(OSTNormalMap)) {
|
||||
result = mProviders.value(OSTNormalMap);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
result = new OSTNormalProvider();
|
||||
mProviders.insert(OSTNormalMap, result);
|
||||
}
|
||||
|
@ -22,7 +23,8 @@ TmsProviderFactory::create(LAMPMainWidget::TmsProviders provider) {
|
|||
case GaodeNormapMap:
|
||||
if (mProviders.contains(GaodeNormapMap)) {
|
||||
result = mProviders.value(GaodeNormapMap);
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
result = new GaodeNormalProvider();
|
||||
mProviders.insert(GaodeNormapMap, result);
|
||||
}
|
||||
|
@ -31,7 +33,7 @@ TmsProviderFactory::create(LAMPMainWidget::TmsProviders provider) {
|
|||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
|
|
@ -106,6 +106,7 @@
|
|||
<IncludePath>.;.\RasterMainWidget;..\RasterProcessToolWidget;..\RasterProcessToolWidget\ToolBoxManager;..\BaseCommonLibrary;..\BaseCommonLibrary\BaseTool;..\BaseCommonLibrary\ToolAbstract;..\GPUBaseLib\GPUTool;..\GPUBaseLib;..\RasterMainWidgetGUI;..\RasterMainWidgetGUI\RasterMainWidget;$(IncludePath)</IncludePath>
|
||||
<CopyLocalProjectReference>true</CopyLocalProjectReference>
|
||||
<CopyCppRuntimeToOutputDir>true</CopyCppRuntimeToOutputDir>
|
||||
<LinkIncremental>true</LinkIncremental>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
<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'">
|
||||
<ClCompile>
|
||||
<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>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">
|
||||
|
|
|
@ -21,6 +21,9 @@
|
|||
<UniqueIdentifier>{639EADAA-A684-42e4-A9AD-28FC9BCB8F7C}</UniqueIdentifier>
|
||||
<Extensions>ts</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="RasterLayer">
|
||||
<UniqueIdentifier>{1a65f538-c16c-4824-895f-105eb2fc502e}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<QtRcc Include="RasterMainWidgetGUI.qrc">
|
||||
|
|
|
@ -7,6 +7,7 @@ namespace RasterMessageShow {
|
|||
|
||||
RasterWidgetMessageShow::RasterWidgetMessageShow(QObject* parant):QObject(parant)
|
||||
{
|
||||
this->textBrowserMessage = nullptr;
|
||||
QObject::connect(this, SIGNAL(ShowMessage(QString)), this, SLOT(ShowMessageInfo(QString)));
|
||||
}
|
||||
|
||||
|
@ -26,12 +27,12 @@ namespace RasterMessageShow {
|
|||
|
||||
void RasterWidgetMessageShow::ShowMessageInfo(QString Message)
|
||||
{
|
||||
std::cout << Message.toLocal8Bit().constData() << std::endl;
|
||||
if (nullptr != this->textBrowserMessage) {
|
||||
this->textBrowserMessage->append(Message);
|
||||
this->textBrowserMessage->moveCursor(QTextCursor::MoveOperation::End);
|
||||
this->textBrowserMessage->repaint();
|
||||
std::cout << Message.toLocal8Bit().constData() << std::endl;
|
||||
|
||||
}
|
||||
else {}
|
||||
}
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
#include "LAMPMainWidgetRunProgram.h"
|
||||
#include <QtWidgets/QApplication>
|
||||
|
||||
// 这个项目是基于easygis项目,原项目地址: https://gitee.com/stormeye2020/easygis.git
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
QApplication a(argc, argv);
|
||||
|
|
Loading…
Reference in New Issue