Merge remote-tracking branch 'origin/RasterShow-dev' into RFPC-dev

pull/14/head
陈增辉 2025-04-29 11:46:33 +08:00
commit 9b91f722a9
20 changed files with 1413 additions and 1422 deletions

View File

@ -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,38 @@ 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);
}
}
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 +87,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 +106,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 +139,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 +168,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,36 +290,36 @@ 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");
}
}
QTableWidget* RasterMainWidget::getTaskTable()
{
QTableWidget* RasterMainWidget::getTaskTable()
{
return this->mUi->taskTable;
}
}
}

View File

@ -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();

View File

@ -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,8 +84,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>906</width>
<height>23</height>
<width>898</width>
<height>22</height>
</rect>
</property>
<widget class="QMenu" name="projectMenu">
@ -122,8 +122,6 @@
<property name="title">
<string>帮助</string>
</property>
<addaction name="tutorialAction"/>
<addaction name="srcAction"/>
<addaction name="separator"/>
</widget>
<addaction name="projectMenu"/>

View File

@ -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
}

View File

@ -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);
}
}
}

View File

@ -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();
};
};
}

View File

@ -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;
}
}
}
}

View File

@ -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();
}
}
}

View File

@ -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 truefalse
*/
bool isVisible() const {return mIsVisible;}
bool isVisible() const { return mIsVisible; }
/*
*
* @param visible truefalse
*/
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 };
};
}

View File

@ -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;
};
}

View File

@ -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);
}
}
}

View File

@ -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

View File

@ -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*>(&currentLayer->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;
}

View File

@ -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;
}
}
}

View File

@ -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);
}

View File

@ -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;
}
}
}

View File

@ -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'">

View File

@ -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">

View File

@ -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 {}
}

View File

@ -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);