ArcGIS Runtime SDKs: Using QML to Build Native Cross-platform...

Preview:

Citation preview

ArcGIS Runtime SDKs:

Using Qt to Build Native Cross-platform

Apps

Eric Bader

@ECBader

@ArcGISRuntime

Agenda

• The case for native apps

• What we mean by Cross-platform

• QML, C++, Apps, and the ArcGIS Runtime SDK for Qt

• Build once, compile it for many

• What’s ahead

• Questions

Why build native apps?

• Work online & offline

• Access hardware and sensors

- GPS, camera, Bluetooth, NFC, etc

• Great performance

• Publish apps to stores

The challenge

• Lots of platforms

• Lots of devices

• Unique development patterns

- Languages

- Frameworks

- IDEs

- Workflows

iOS

AndroidWindows

Linux

Mac OS X

iPhone

iPad

MacBook

Galaxy S 5

Nexus 10Surface

Windows

Desktop

Embedded

XCode

Swift Objective C

Java

Android

Studio

Eclipse

.NET

C#

Visual

Studio

Windows

Universal

Cocoa

Gradle

Qt and QML

• Cross platform framework

• Build native apps

• Same source code compiled for each platform

• Powered by C++ on the backend (very fast)

• Exposed through QML (based on JavaScript)

• ArcGIS Runtime SDK for Qt

- Mapping API provided by Esri

- Brings the power of ArcGIS to your devices

ArcGIS Runtime Functionality

• Build apps for any platform, any device (almost)

• Visualize geographic data – maps, layers, graphics

- feature, dynamic, tiled, raster, …

• Identify features, query data, and display info pop-ups

• Share maps and content across ArcGIS platform

• Offline maps, data, routing, geocoding

• Powerful analysis and local geometric operations

• Loadable resources

• Async APIs

QML

Highly

readable

JSON/CSS-

like syntax

Imperative

JavaScript

Code to handle

events

Dynamic

property

binding

Declarative

UI elements

ArcGIS

Runtime

QML front-end, C++ back-end

Cross platform

Qt – C++

QtQuick QtWidgetQtQuick

Qml

UI

Runtime Api

Desktop only

Highly-recommended reading

“Qt Quick - How to write a cross platform mapping application with a QML front-end and C++

back-end” - Lucas Danzinger

https://geonet.esri.com/community/developers/native-app-developers/arcgis-runtime-

sdk-for-qt/blog/2016/12/19/qt-quick-how-to-write-a-cross-platform-mapping-

application-with-a-qml-frontend-and-c-backend

To get there:

1. On http://developers.arcgis.com/qt , click the “Forum” tab

2. On the GeoNet page, click the “Content” tab, then the green icon (Blogs)

About the QML and C++ APIs in ArcGIS Runtime SDK for Qt

• 1 SDK – 2 APIs

• Functionally equivalent

• Don’t use components of the C++ and QML APIs together in the same app

• JavaScript skills come in handy in the QML tier

• Use C++ backend for compute-intensive app logic

What You Need for Development

• Windows + Visual Studio (2015), Linux, or macOS

• Qt SDK and Qt Creator from The Qt Company – http://qt.io

• OpenSSL for connected/secured services– need to get these binaries separately

Building for Android devices?

- OS: Windows, macOS, Linux

- The Android SDK & NDK bits

- Ant

- Java Developer Kit (JDK)

• Building for iOS devices?

- OS: macOS

- Xcode

- Apple Developer Subscription

• ArcGIS Runtime SDK for Qt - http://developers.arcgis.com/qt

Do NOT WORRY – you don’t need to know how to

program Android or iOS!

Installing the Qt SDK on Windows

Installing the Qt SDK on Mac

Let’s see it in

action!

The Esri GeoServices Plugin

• Connects Qt-based apps to Esri’s ArcGIS Online services

https://doc-snapshots.qt.io/qt5-5.8/location-plugin-esri.html

• Add Esri basemaps to your applications

- 12 different styles

• Locate addresses and coordinates

- Uses ArcGIS Online Geosearch Service

• Solve Point-to-point routing *

- Uses ArcGIS Online Routing Service

* A token is only needed for routing

Esri GeoServices

Plugin demo

What’s ahead…

100.1

10.2.x equivalency

TodayQ2

2017

ArcGIS Runtime 2017 Release Schedule

Q42017

100.2

The ‘Engine’

release

100.0

Update 1 – Equivalency with 10.2.x

• Complete the 3D viewing support for mobile devices

• WMTS layer

• Related tables

• Toolkits*

• Coordinate conversion operations

SUBJECT TO CHANGE!

Update 2 – the ‘Engine’ release

• Geopackage layers – vector and raster

• WMS layers

• KML layers

• Custom transformations

• Time-aware layers

• Toolkits*

• Lots more 3D capabilities….

SUBJECT TO CHANGE!

Resources

• Developer Resources –

- http://developers.arcgis.com/qt

• Connect with us on GeoNet –

- https://geonet.esri.com/community/developers/native-app-developers/arcgis-runtime-sdk-

for-qt

• All samples are shared on GitHub –

- https://github.com/Esri/arcgis-runtime-samples-qt

• QML Toolkit source code also on GitHub –

- https://github.com/Esri/arcgis-runtime-toolkit-qt

Questions?

Recommended