1.简介
ArcGIS Runtime SDK for Qt是基于Qt的二次开发包,以帮助开发者工作完成一些地图开发的一些需求。基于的Qt的ArcGIS开发目前有两个主要版本,一是我们今天介绍的ArcGIS Runtime SDK以及最新的ArcGIS Maps SDK for Qt,ArcGIS Maps是基于完全成熟的 Runtime架构而来的,也是当前官方主推的,ArcGIS Runtime SDK for Qt 100.15.x是长期支持版本,官方只会进行小版本的维护,所以想要体验最新最完善的功能可以下载安装ArcGIS Maps版本,ArcGIS Maps完全基于Qt6开发的,如果有Qt5需求建议使用Runtime版本。
2.Windows环境搭建
ArcGIS 支持跨平台,包括Windows,Linux,MacOS也支持移动端,如Android和IOS的开发。这里主要针对Windows平台的开发工作。笔者这里使用的开发环境是Visual Studio 2022,Qt5.15.2以及ArcGIS Runtime SDK for Qt V100.15.3版本。VS和Qt的环境搭建不在探讨范围内,主要介绍一下ArcGIS开发包的安装过程。需要去Esri官网去下载对应版本的开发包,需要登陆自己的账号进行下载,可以使用GitHub账号登陆,点击这里进入下载页面:
选择Windows版本下即可。下载后安装即可,安装过程很简单按照引导一步一步安装即可。打开Qt新建工程,发现已经可以正常创建使用工程项目了。
对应的帮助文档也嵌入进来了。
3.工程创建
下面我们演示一下工程的创建,新建工程,选择创建ArcGIS Qt Widgets App项目。选择qmake构建系统,其他的默认即可。然后运行
没有效果,因为网络原因在线地图加载不动。当然ArcGIS是支持离线地图文件的,常用的是tpk,tpkx和mmpk这几种地图包,关于地图文件的制作可以自行百度,这里不做探讨,然后添加以下代码:
// C++ API headers
#include "Basemap.h"
// Other headers
#include "ArcGis.h"
#include "Map.h"
#include "MapGraphicsView.h"
#include "TileCache.h"
#include "ArcGISTiledLayer.h"
#include "Basemap.h"
using namespace Esri::ArcGISRuntime;
ArcGis::ArcGis(QWidget* parent /*=nullptr*/):
QMainWindow(parent)
{
// Create a map using the ArcGISStreets BasemapStyle
// m_map = new Map(BasemapStyle::ArcGISStreets, this);
TileCache* tileCache = new TileCache("C:/SimuProjects/Map/chinaGgoogle13jpg.tpk", this);
ArcGISTiledLayer* tiledLayer = new ArcGISTiledLayer(tileCache, this);
Basemap* basemap = new Basemap(tiledLayer, this);
m_map = new Map(basemap, this);
// Create the Widget view
m_mapView = new MapGraphicsView(this);
// Set map to map view
m_mapView->setMap(m_map);
// set the mapView as the central widget
setCentralWidget(m_mapView);
}
// destructor
ArcGis::~ArcGis()
{
}
再次运行,效果显现: