arcgis api for javascript: building mobile web apps · arcgis api for javascript: building mobile...

56
Building Mobile Apps with the ArcGIS API for JavaScript Andy Gup

Upload: others

Post on 03-Jun-2020

47 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Building Mobile Apps with the

ArcGIS API for JavaScript

Andy Gup

Page 2: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Expectations

Page 3: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Capabilities

Page 4: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Demo

Touch

Page 5: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

BasemapGallery

Page 6: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

BasemapToggle

Page 7: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

BasemapToggle

Page 8: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Home

Page 9: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

LayerList

Page 10: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

LayerList action

Page 11: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Expand

Page 12: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Compass

Page 13: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Compass

Page 14: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Demo

Locate

Page 15: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Popups

Page 16: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Calcite Maps - Settings

Page 17: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Calcite Maps - Settings

Page 18: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Calcite Maps - Basemaps

Page 19: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Calcite Maps - Basemaps

Page 20: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

HTML5 input types

type=“email” type=“tel” type=“date”

Page 21: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Demos

Capabilities

Page 22: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Managing initial load times

Page 23: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Initial loading in a mobile browser

Often misunderstood

Many things happening

Vulnerable to timing issues

Consider user’s experience

Page 24: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Initial loading in a mobile browser

CSS

3rd party libraries

Frameworks

Framework plugins

ArcGIS JS API

GIS queries

GET map tiles

Page 25: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Initial loading in a mobile browser

CSS

3rd party libraries

Frameworks

Framework plugins

ArcGIS JS API

GIS queries

GET map tiles

Page 26: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Initial loading in a mobile browser

Wait for framework initialization- In Angular: implements OnInit

- In Cordova: ‘deviceready’ event

- In ArcGIS: dojo/domReady!

Page 27: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Consider synchronous patterns

Framework init

dojo/ready!

Map ready

Feature service loaded

Page 28: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Lazy load modules and libraries

Wait for user input

Map ready

Load widget

Page 29: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Lazy load demo

Demo

Page 30: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Reserve async for after app load

Wait for framework initialization- In Angular: implements OnInit

- In Cordova: ‘deviceready’ event

- In ArcGIS: dojo/domReady!

Page 31: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

MapView ready?

The View has a Map

View container size is greater than zero

View has a spatial reference

API Reference MapView.ready

Demo

Page 32: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Loadable Patterns

Any resource that handles async data access

Examples: feature layers, tasks, web maps

not-loaded

loading

failed

loaded

Page 33: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

API reference

WebMap.loadStatus

Page 34: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

load() example

Demo

Page 35: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Splash Screens

Distract end user from long load times

Gives you control over when main app visible

Wait for MapView.then()

https://github.com/andygup/splash-screen-js

Page 36: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Using local builds

Page 37: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Why?

More modules – more requests

Optimized build for app

Web application vs. Hybrid

Reduce http service calls for Hybrid apps

Page 38: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

How to create custom builds?

ArcGIS API for JavaScript Web Optimizer – 3x

Bower

npm

Page 39: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Demo

Using local builds

Page 40: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Working with Cordova and IonicNative Mobile

Page 41: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Cordova/Phonegap

Wait for “deviceready” event

https://github.com/Esri/quickstart-map-phonegap

Page 42: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Ionic and loading ArcGIS JavaScript modules

Many helper libraries!

• esri-loader (platform agnostic)

• https://github.com/Esri/angular-cli-esri-map

• Ionic2-esri-map (Sample app)

• ArcGIS TypeScript definitions

Page 43: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit
Page 44: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Debugging and testing

Page 45: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Physical devices

http://blog.adtile.me/2014/01/08/adtile-device-lab/

Page 46: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Remote debugging

• Safari Web Inspector Remote

• Google Chrome remote debugging

• http://livereload.com/

• Browser-sync

Page 47: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Enable iOS remote web inspection

Page 48: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Enable Android remote web inspection

Page 49: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Content Security Policy (CSP)

Page 50: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Demo

Debugging Mobile

Page 51: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Working with 3D on Mobile

Page 52: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Andy Gup – [email protected]

Page 53: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit
Page 54: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

ArcGIS API for JavaScript – 3D on mobile devices

Works on

• Apple iPhone 8

• Apple iPad Pro 2

• Samsung Galaxy S8

• Samsung Galaxy Tab S3

It’s as simple as opening a webpage

• http://www.arcgis.com/home/webscene/viewer.html

Page 55: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit

Download the Esri Events

app and find your eventSelect the session

you attended

Scroll down to find the

feedback section

Complete answers

and select “Submit”

Please Take Our Survey in the Esri Events App

Page 56: ArcGIS API for JavaScript: Building Mobile Web Apps · ArcGIS API for JavaScript: Building Mobile Web Apps, 2018 Esri Developer Summit D.C. -- Presentation, 2018 Esri Developer Summit