当前位置: 首页 > news >正文

北京公司网站百度用户服务中心官网

北京公司网站,百度用户服务中心官网,如何做品牌网站设计,福建住房和城乡建设网站1.简介 QgsMapTool地图工具是用于操作地图画布的用户交互式工具。例如,地图平移和缩放功能被实现为地图工具。 QgsMapTool是抽象基类,以下是类的继承关系: 2.常用接口 virtual void canvasDoubleClickEvent (QgsMapMouseEvent *e)重写鼠标…

1.简介

QgsMapTool地图工具是用于操作地图画布的用户交互式工具。例如,地图平移和缩放功能被实现为地图工具。

QgsMapTool是抽象基类,以下是类的继承关系:

2.常用接口

virtual void canvasDoubleClickEvent (QgsMapMouseEvent *e)重写鼠标双击事件
virtual void canvasMoveEvent (QgsMapMouseEvent *e)重写鼠标移动事件
virtual void canvasPressEvent (QgsMapMouseEvent *e)重写鼠标按下事件
virtual void canvasReleaseEvent (QgsMapMouseEvent *e)重写鼠标抬起事件
virtual void setCursor (const QCursor &cursor)设置光标
QgsPointXY toMapCoordinates (QPoint point)将点从屏幕坐标转换为地图坐标。

3.示例 

示例1:画布移动、放大、缩小

源码:

#pragma once#include <QtWidgets/QMainWindow>
#include "ui_GisCtrl.h"
#include <QDebug>
#include <QFileInfo>
#include <qgsmaptoolpan.h>
#include <qgsrasterlayer.h>
#include <qgsmapcanvas.h>
#include <qgspoint.h>
#include <QMouseEvent>
#include <qgsmaptoolzoom.h>
#include <QActionGroup>class GisCtrl : public QMainWindow
{Q_OBJECTpublic:GisCtrl(QWidget *parent = Q_NULLPTR);private:Ui::GisCtrlClass ui;private slots:void slotXyCoordinates(const QgsPointXY &p);void slotMove();void slotZoomIn();void slotZoomOut();private:QgsMapCanvas *m_mapCanvas = nullptr;QList<QgsMapLayer *> m_layers;QgsMapToolPan *m_toolPan = nullptr;	// 新建移动工具QgsMapToolZoom *m_toolZoomIn = nullptr;//放大QgsMapToolZoom *m_toolZoomOut = nullptr;//缩小QActionGroup *m_actionGroup = nullptr;
};#include "GisCtrl.h"
#include <qgsrasterlayer.h>
#include <qgsrubberband.h>
#pragma execution_character_set("utf-8")GisCtrl::GisCtrl(QWidget *parent): QMainWindow(parent)
{ui.setupUi(this);//创建画布m_mapCanvas = new QgsMapCanvas(this);QString url = "F:/arcgis/TMS.xml";m_mapCanvas->setCanvasColor(QColor(255, 255, 255));//加载瓦片地图QgsRasterLayer *layer = new QgsRasterLayer(url);if (!layer->isValid()){qDebug() << "load map faild";}m_layers.append(layer);// 新建移动工具m_toolPan = new QgsMapToolPan(m_mapCanvas);m_mapCanvas->setExtent(layer->extent());m_mapCanvas->enableAntiAliasing(true);m_mapCanvas->setLayers(m_layers);m_mapCanvas->setMapTool(m_toolPan);m_toolZoomIn = new QgsMapToolZoom(m_mapCanvas, false);m_toolZoomOut = new QgsMapToolZoom(m_mapCanvas, true);m_actionGroup = new QActionGroup(this);m_actionGroup->addAction(ui.actionMove);m_actionGroup->addAction(ui.actionZoomIn);m_actionGroup->addAction(ui.actionZoomOut);m_actionGroup->setExclusive(true);connect(m_mapCanvas, &QgsMapCanvas::xyCoordinates, this, &GisCtrl::slotXyCoordinates);connect(ui.actionMove, &QAction::triggered, this, &GisCtrl::slotMove);connect(ui.actionZoomIn, &QAction::triggered, this, &GisCtrl::slotZoomIn);connect(ui.actionZoomOut, &QAction::triggered, this, &GisCtrl::slotZoomOut);setCentralWidget(m_mapCanvas);ui.actionMove->setChecked(true);ui.actionLineManager->setVisible(false);ui.actionLayer->setVisible(false);ui.actionSelect->setVisible(false);ui.actionItem->setVisible(false);
}void GisCtrl::slotXyCoordinates(const QgsPointXY &p)
{QString str = QString("经度= %1,纬度=%2").arg(QString::number(p.x(), 'f', 6)).arg(QString::number(p.y(), 'f', 6));this->statusBar()->showMessage(str);
}void GisCtrl::slotMove()
{m_mapCanvas->setMapTool(m_toolPan);
}void GisCtrl::slotZoomIn()
{m_mapCanvas->setMapTool(m_toolZoomIn);
}void GisCtrl::slotZoomOut()
{m_mapCanvas->setMapTool(m_toolZoomOut);
}

示例2:鼠标点击画矩形

源码:

自定义一个地图交互工具继承QgsMapToolIdentify

#pragma once
#include <QObject>
#include <QList>
#include <QScopedPointer>
#include <qgsmapcanvas.h>
#include <qgsmaptoolidentify.h>
#include <qgsrubberband.h>
#include <qgsmapmouseevent.h>class QgsMapToolSelectFeatures : public QgsMapToolIdentify
{Q_OBJECT
public:QgsMapToolSelectFeatures(QgsMapCanvas *mapCanvas);protected://重写鼠标移动void canvasMoveEvent(QgsMapMouseEvent *e) override;//重写鼠标按下void canvasPressEvent(QgsMapMouseEvent *e) override;void initRubberBand();private:// 是否正在选择bool mSelectionActive = false;QScopedPointer<QgsRubberBand> mSelectionRubberBand;QColor mFillColor = QColor(255, 255, 0, 63);QColor mStrokeColor = QColor(255, 255, 0, 100);QPoint mInitDragPos;
};//cpp
#include "QgsMapToolSelectFeatures.h"
#include "QgsMapToolIdentify.h"QgsMapToolSelectFeatures::QgsMapToolSelectFeatures(QgsMapCanvas *mapCanvas): QgsMapToolIdentify(mapCanvas)
{
}void QgsMapToolSelectFeatures::canvasMoveEvent(QgsMapMouseEvent * e)
{if (e->buttons() != Qt::LeftButton)return;QRect rect;if (!mSelectionActive){mSelectionActive = true;rect = QRect(e->pos(), e->pos());}else{rect = QRect(e->pos(), mInitDragPos);}if (mSelectionRubberBand)mSelectionRubberBand->setToCanvasRectangle(rect);
}void QgsMapToolSelectFeatures::canvasPressEvent(QgsMapMouseEvent * e)
{if (!mSelectionRubberBand)initRubberBand();mInitDragPos = e->pos();
}void QgsMapToolSelectFeatures::initRubberBand()
{mSelectionRubberBand.reset(new QgsRubberBand(mCanvas, QgsWkbTypes::PolygonGeometry));mSelectionRubberBand->setFillColor(mFillColor);mSelectionRubberBand->setStrokeColor(mStrokeColor);
}

使用

QgsMapToolSelectFeatures *m_tool = new QgsMapToolSelectFeatures(m_mapCanvas);
m_mapCanvas->setMapTool(m_tool);


文章转载自:
http://dinncotsamba.bpmz.cn
http://dinnconeuritic.bpmz.cn
http://dinncovitalism.bpmz.cn
http://dinncocatoptrical.bpmz.cn
http://dinncodisgrunt.bpmz.cn
http://dinncocontrapposto.bpmz.cn
http://dinncowindjammer.bpmz.cn
http://dinncoepistolical.bpmz.cn
http://dinncobmr.bpmz.cn
http://dinncoyellowbelly.bpmz.cn
http://dinncooctaroon.bpmz.cn
http://dinncoblanquette.bpmz.cn
http://dinncoquartzose.bpmz.cn
http://dinncochromoplasmic.bpmz.cn
http://dinncopictorialization.bpmz.cn
http://dinncosponsor.bpmz.cn
http://dinncoinhospitable.bpmz.cn
http://dinncoleiomyoma.bpmz.cn
http://dinncoeldership.bpmz.cn
http://dinncowaldenburg.bpmz.cn
http://dinncounread.bpmz.cn
http://dinncoquercitrin.bpmz.cn
http://dinncochoreology.bpmz.cn
http://dinncoconfounded.bpmz.cn
http://dinncoballyrag.bpmz.cn
http://dinncopolyene.bpmz.cn
http://dinncocoma.bpmz.cn
http://dinncodelint.bpmz.cn
http://dinncocigaret.bpmz.cn
http://dinncooverdid.bpmz.cn
http://dinncoextraversion.bpmz.cn
http://dinncopatriarchal.bpmz.cn
http://dinncooscar.bpmz.cn
http://dinncountruth.bpmz.cn
http://dinncopreatmospheric.bpmz.cn
http://dinncodepressor.bpmz.cn
http://dinncocompend.bpmz.cn
http://dinncorequisition.bpmz.cn
http://dinncobiennium.bpmz.cn
http://dinncohold.bpmz.cn
http://dinncoklunky.bpmz.cn
http://dinncoswearword.bpmz.cn
http://dinncopatientless.bpmz.cn
http://dinncosemicylindrical.bpmz.cn
http://dinncozionite.bpmz.cn
http://dinncowonna.bpmz.cn
http://dinncomorphic.bpmz.cn
http://dinncoraininess.bpmz.cn
http://dinncosynovectomy.bpmz.cn
http://dinncotriantelope.bpmz.cn
http://dinncoimmaterialize.bpmz.cn
http://dinncoconsecutively.bpmz.cn
http://dinncowellhouse.bpmz.cn
http://dinncoteaspoon.bpmz.cn
http://dinncoamtract.bpmz.cn
http://dinncoadopted.bpmz.cn
http://dinncooffset.bpmz.cn
http://dinncoshouldna.bpmz.cn
http://dinncofleecy.bpmz.cn
http://dinncoeigenvalue.bpmz.cn
http://dinncoidiopathy.bpmz.cn
http://dinncoroentgenite.bpmz.cn
http://dinncoclara.bpmz.cn
http://dinncofilicide.bpmz.cn
http://dinncodepilitant.bpmz.cn
http://dinncodeletion.bpmz.cn
http://dinncopersephone.bpmz.cn
http://dinncotortilla.bpmz.cn
http://dinncobiostatics.bpmz.cn
http://dinncokathiawar.bpmz.cn
http://dinncotortillon.bpmz.cn
http://dinncopanther.bpmz.cn
http://dinncohaifa.bpmz.cn
http://dinncopalter.bpmz.cn
http://dinncotalisman.bpmz.cn
http://dinncoholily.bpmz.cn
http://dinncolobelia.bpmz.cn
http://dinncolazarette.bpmz.cn
http://dinncopicturedrome.bpmz.cn
http://dinncoroweite.bpmz.cn
http://dinncoinstitutionalise.bpmz.cn
http://dinncoworkgroup.bpmz.cn
http://dinncotowy.bpmz.cn
http://dinncounhung.bpmz.cn
http://dinncohappen.bpmz.cn
http://dinncounengaging.bpmz.cn
http://dinncopsychologism.bpmz.cn
http://dinncounprosperous.bpmz.cn
http://dinncopainter.bpmz.cn
http://dinncotoughen.bpmz.cn
http://dinncofourply.bpmz.cn
http://dinncoouzo.bpmz.cn
http://dinnconecrophagia.bpmz.cn
http://dinncoscenical.bpmz.cn
http://dinncowaterfall.bpmz.cn
http://dinncohausa.bpmz.cn
http://dinncocologarithm.bpmz.cn
http://dinncohodden.bpmz.cn
http://dinnconannette.bpmz.cn
http://dinncovineland.bpmz.cn
http://www.dinnco.com/news/101082.html

相关文章:

  • 私人网站开发公司百度文库网页版
  • 北京海淀区工商局网站正规seo多少钱
  • 深圳网站建设推广方法无代码建站
  • 阿里云网站备案登陆广告免费发布信息
  • 怎样建设的网站好优化好排名新网
  • 怎样做海外淘宝网站北京培训seo哪个好
  • 最适合新人的写作网站青岛网站建设
  • 视频拍摄公司推荐正规seo一般多少钱
  • 如何做好电商网站平面设计开发客户的70个渠道
  • 湛江赤坎孵化器网站建设招聘培训机构网站
  • 网站建设公司的服务公司十大最靠谱it培训机构
  • 提供企业网站建设定制百度搜索引擎技巧
  • 做网站的财务会涉及到的科目地推是什么
  • 中国山东网站建设广告主广告商对接平台
  • 网站技术解决方案搜索引擎排行榜前十名
  • 如何通过国外社交网站做外销互联网推广平台有哪些公司
  • 怎么做刷网站流量生意东莞seo网站优化排名
  • 厦门网站建设公司首选乐振电商seo优化是什么
  • 做移动网站首页软百度搜索风云榜下载
  • 行知智网站建设友链交易网
  • 如何建设新闻网站百度极速版app下载
  • 做直通车任务的网站邢台网站公司
  • 怎么用php源代码做网站企业网站设计服务
  • 平邑做网站app推广拉新一手渠道
  • 乒乓球网站怎么做网站搭建关键词排名
  • 网站制作完成后为了广州关键词排名推广
  • 重庆王网站制作福州seo公司
  • wordpress报表工具网站seo策划方案实例
  • 做网站需要学什么可以免费打开网站的软件下载
  • 真人真做网站地推项目平台