Getting Started with theArcGIS Runtime SDK for Qt
with Thomas Dunn and Koushik Hajra
March 8–11, 2016 | Palm Springs, CA
Esri Developer Summit
What if ...?
Agenda for today
▪ Intro to Qt, QML and Runtime
▪ Qt Widgets (C++) development
▪ Qt Quick (QML) development
This is an intro-level tech session
What is Qt?
• Cross-platform libraries• High-level abstractionsEasy
• Write once, run anywhere• Builds as native C++Portable
• Pre-built platforms• Source codeOpen
http://qt.io
Qt Creator
▪ The IDE for Qt development
▪ Use Qt Creator on Linux, OS X or Windows
▪ Qt Creator comes with the Qt SDK from the Qt Company
http://www.qt.io/download/
What is ArcGIS Runtime SDK for Qt?
▪ Build advanced mapping apps for mobile & desktop clients
▪ Build apps that leverage the ArcGIS platform
▪ Build C++ apps for Linux and Windows
▪ Build QML apps for Linux, Windows, Android, iOS and OS X
▪ Build natively on top of Runtime’s C++ core and GPU acceleration
▪ Build apps that are connected to network services or disconnected
Runtime platforms
Qt
OS X
Windows Store
JavaSE
iOS
Android
Windows Phone
Mobile
Desktop
Embedded
.NET
Windows Desktop
Qt
Runtime platforms
QT
OS X
Windows Store
JavaSE
iOS
Android
Windows Phone
Mobile
Desktop
Embedded
.NET
Windows Desktop
How do I install it?
▪ Install the Qt Frameworkfrom the Qt Company – Use the latest version
▪ Log onto ArcGIS Online with your developer account
▪ Download ArcGIS Runtime SDK for Qt
▪ Run the installer and the post installer
Installation tips
Demo
S
Qt Widgets ( C++ )development
Map layers
Layers are added to the map in order, bottom-to-top
Graphics layers: live / temporary data:Vehicles, people, events
Basemap layer: spatial contextImagery, topography
Operational layers: dynamic featuresFacilities, buildings, zones, networks
Where do I get data?
▪ Online Services: access these via a URL– ArcGIS Online: your organizations data or data available to the public
▪ http://services.arcgisonline.com/ArcGIS/rest/services
▪ Local Content: author packages and deploy them with your app– Use a tile package as a high performance base map layer– Query from a local map service build from a map package– Geocode using locator files
Task-based framework for asynchronous operations
1. Construct a task object
2. Provide parameters
3. Connect slots for completion
signals
4. Execute task
5. Grab results in slot when task
completes
Some Runtime tasks:o Locator (geocoding) o Routing o Geoprocessingo Geodatabase synco Findo Queryo Identify featureso Find closest facilityo Calculate service areao Tile cache generation
C++ apps
Demo
Qt Quick ( QML )Development
What is QML?
▪ The language for the Qt Quick product from The Qt Company
▪ A declarative language for building cross-platform apps
▪ Declaring components is similar to writing JSON or CSS
▪ Writing functions with JavaScript
▪ Easy to read, easy to write
▪ Create UI rapidly with animation and prebuilt controls
http://qt.io/qt-quick/
ArcGIS Runtime and QML
▪ Extends QML by adding QML types with ArcGIS Runtime functionality
https://developers.arcgis.com/qt/qml/guide/qml-and-esri-s-qml-api.htm `
QML apps
Demo
Licensing levels
▪ DeveloperAll functionality available while you develop your app (with a developer account)Displays map watermark and debug messages to the console
▪ BasicThe basics for online app development, that is, all functionality except– Offline locators - Offline routing – Offline editing - Local geodatabase sync operations with an upload
▪ StandardAll functionality
https://developers.arcgis.com/qt/qml/guide/license-your-app.htm
Where to from here?
Create a developer accounthttps://developers.arcgis.com/sign-up/
https://developers.arcgis.com/qt/
https://developers.arcgis.com/qt/cpp/sample-code/
https://geonet.esri.com/community/developers/native-app-developers/arcgis-runtime-sdk-for-qt
Samples
Demo
Coming soon in Quartz
▪ QML Map View accessible from C++ API
▪ Samples hosted on GitHub
▪ Support for vector tile layers
▪ Support for 3D scenes
▪ Support for Webmaps
▪ Support for mobile map packages
More info in session The Road Ahead: ArcGIS Runtime
Related sessions
▪ QML and JavaScript for Native App Development– Wednesday 1:00 – 2:00 pm in Smoketree A - E
▪ Advanced topics in Developing ArcGIS Apps with Qt– Thursday 9:00 – 10:00 am in San Jacinto (this room)
▪ Cross-platform UI for C++ Apps using QML at Quartz– Thursday 10:30 – 11:30 am in Demo Theater 3 (Oasis 1)
▪ Cross-platform Native App Development with Qt/QML– Thursday 2:30 – 3:30 pm in Demo Theater 3 (Oasis 1)
▪ The Road Ahead: ArcGIS Runtime– Thursday 5:30 – 6:30 pm in Primrose A
Rate this session at: www.esri.com/RateMyDevSummitSession