33
ArcGIS API for JavaScript: Building Mobile Web Apps Andy Gup, Esri U.S. Raluca Nicola, Esri R&D Center Zurich

ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

  • Upload
    others

  • View
    17

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

ArcGIS API for JavaScript: Building Mobile Web AppsAndy Gup, Esri U.S.Raluca Nicola, Esri R&D Center Zurich

Page 2: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Agenda

• Responsive design• Popups and Widgets• Hybrid Approaches• Geolocation• Performance and Usability• Progressive Web Apps• Best practices in 3D

Page 3: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Responsive Map App Design

• Out-of-the-box widgets support a variety of screens• Fluid design

Page 4: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Responsive Widgets Demo - Basemap

Page 6: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Widgets specifically for Mobile

• Home and Compass• Tracking

Page 7: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Hybrid = JavaScript + Native

There are several frameworks…here are a few examples

Provides access to native functionalitye.g. Geolocation, Bluetooth, SQLite, Touch ID

Page 8: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Cordova/PhoneGap

github.com/Esri/quickstart-map-phonegap

github.com/Esri/cordova-plugin-advanced-geolocation

Page 9: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Ionic (Angular + Cordova)

github.com/jwasilgeo/ionic-esri-map

github.com/andygup/ionic2-esri-map

github.com/tomwayson/angular-esri-loader

Page 10: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Geolocation

github.com/Esri/html5-geolocation-tool-js

github.com/Esri/cordova-plugin-advanced-geolocation

Page 11: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Mobile Web Map Performance

Smart device vs Laptop

UI Jerkiness

Improving the mobile experience

Page 12: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Smart device vs. Laptop

Often significantly less user memorySlower application loading/performanceMobile internet speeds fluctuate widely

VS

Page 13: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

UI Jerkiness (Jank)

Interruptions in frame production (fps) and latency

Temporary app lockupsScrolling latencySlow app responseBrowser warning messagesBrowser crashes

Page 14: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

UI Jerkiness (Jank)

Caused by ANY operation taking longer than

16ms** ~60Hz or 60 FPS

Page 15: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

UI Jerkiness (Jank)

Significant jank can lead to:- Decreased usability- Decreased productivity- User frustration- Lack of user return visits

Page 16: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Common Causes of UI Jerkiness (Jank)

Slow(er) internet – delays in loadingDownloading large files or many filesHeavy processing on main threadDOM layout thrashing

Page 17: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Improving Mobile Experience

Lazy load content

Use fewer map layers

Specify outfields on feature layers

Simplify rendering

Use Web Workers

Page 18: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Lazy load content

Defer the initialization of Classes

Demo

Page 19: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Lazy Load Content

Defer loading layers with Map.add() or Map.addMany()

Page 20: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Use fewer layers for mobile

Fewer layers == better performance and less memory usage!

Fewer layers take less time to load

Remove unused layers via Map.remove()

Page 21: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Specify outfields on feature layers

Reduce response payload size and avoid using:

featureLayer.outFields = [“*”];

Instead, only specify what you need, for example:

featureLayer.outFields = [“Name”, “OBJECTID”, “Address”];

Page 22: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Simplify Rendering

Set a FeatureLayer.definitionExpression where possible• Reduces number of features looped by Renderer• Speeds up rendering

Demo 1 – Basic Definition ExpressionDemo 2 – Definition Express + Arcade

Page 23: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Use Web Workers

Where possible, move heavy processing off main thread

Demo 1 – Earthquake GeoJSON feedDemo 2 – esri/core/workers

Page 24: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Progressive Web Apps

Fast no janky scrolling or slow-to-respond interfaces

Reliable

service workers enable a Progressive Web App to load

instantly, regardless of the network state

Engaging

Installable, live on the user's home screen and offer an immersive full screen experience

Page 25: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

How to PWA?

Service workerscript that sits between your applications, the browser, and the network and takes appropriate actions based on whether the network is available or the resource is cached.

See PWA checklist

Manifest fileJSON file that provides information about an application (such as its name, author, icon, and description). Like this the app can be installed on the homescreen of a device.

Page 26: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Demo time

Page 27: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Best practices in 3D

Page 28: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Best practices in 3D

• Using Lower Resolution Textures for Rendered Objects

• Reducing Feature Complexity

• Employing a Lower Rendering Quality Profileview.environment.atmosphere.quality = “low”;

• Avoid shadows if not necessaryview.environment.lighting.directShadowsEnabled = false;

Page 29: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Demo time

Page 30: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Best 3D experience on our officially supported devices:

Apple iPhone 8Apple iPad Pro 2

Samsung Galaxy S8Samsung Galaxy S9

Samsung Galaxy Tab S3

Page 31: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building

Wrap-up!

Best practices for mobile web mapping apps

Use progressive web development patterns

Eliminate user interface jerkiness/jank

Looks for small tweaks to get big performance gains

Page 33: ArcGIS API for JavaScript: Building Mobile Web Apps · 2018 Esri European Developer Summit – Presentation, 2018 Esri European Developer Summit, ArcGIS API for JavaScript: Building