63
ArcGIS API for JavaScript Building Mobile Web Apps Andy Gup, @agup Lloyd Heberlie, @lheberlie March 8–11, 2016 | Palm Springs, CA Esri Developer Summit

ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

  • Upload
    others

  • View
    20

  • Download
    0

Embed Size (px)

Citation preview

Page 1: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

ArcGIS API for JavaScriptBuilding Mobile Web Apps

Andy Gup, @agupLloyd Heberlie, @lheberlie

March 8–11, 2016 | Palm Springs, CA

Esri Developer Summit

Page 2: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

• Introductions• Expectations• Agenda• Resources

Welcome

Page 3: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Why are we here?

Page 4: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Resources

• https://github.com/lheberlie/mobile-webapps-js• https://github.com/lheberlie/mobile-webapps-js/blob/develop/Resources.md

Page 5: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Lloyd Heberlie

Mobile resources in the API

Page 6: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Lloyd HeberlieDesigning for mobile

Page 7: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Touch aware map

Page 8: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

HTML 5 input types

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

Page 9: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Geocoder, LocateButtonesri/dijit/Geocoder

esri/dijit/LocateButton

Page 10: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Popup Mobile

esri/dijit/PopupMobile

Page 13: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Custom components

Custom basemap switcher

Page 14: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Lloyd HeberlieDesigning for mobile

Page 15: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Lloyd Heberlie

Productivity and code management

Page 16: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Setup a developer machine

Source Control

Code quality and verification

web server

Page 17: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Code formatting and management

Page 18: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Automation and continuous integration

Page 19: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

• JSLint• JSHint

Code validation

Page 20: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

CSS preprocessors

Page 21: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Lloyd Heberlie

Productivity and code management

Page 22: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Lloyd Heberlie

Debugging and testing for mobile

Page 23: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Emulators / SimulatorsOpera Mobile Emulator iOS Simulator * Windows Phone Emulator * Android Emulator

Page 24: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Physical devices

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

Page 25: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Remote debugging

• Safari Web Inspector Remote• Google Chrome remote debugging• Adobe Edge Inspect

- Synchronized screen capture, device details- Node.js (weinre local)

• Web Inspector Remote (weinre)

Page 26: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Enable Safari remote web inspection

Page 27: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Safari remote debugging

Page 28: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Safari remote debugging

Page 29: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Chrome remote debugging

Page 30: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Chrome remote debugging

Page 31: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Adobe Edge Inspect

Page 32: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Adobe Edge Inspect

Page 33: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Adobe Edge Inspect

device_model = iPhonedevice_res = 1136x640orientation = portraitos_name = iOSos_version = 7.0.4pixel_density = 326 ppi

device_model = LGE Nexus 5device_res = 1080x1776orientation = portraitos_name = Androidos_version = 4.4.2pixel_density = 480 dpi

device_model = iPaddevice_res = 1024x768orientation = landscapeos_name = iOSos_version = 7.0.4pixel_density = 132 ppi

Page 34: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Lloyd HeberlieDebugging mobile

Page 35: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Many UI frameworks

BootstrapAngular.jsjQueryIonic…...?

Page 36: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Frameworks on github.com/esri

github.com/Esri/bootstrap-map-js

github.com/Esri/angular-esri-map

Page 38: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Add CSS

Page 39: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Set up the div

Page 40: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Load BootstrapMap

Page 41: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Load Bootstrap + jQuery

Page 42: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Mobile Popups

Page 43: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Popups

Tablets Smartphones

InfoWindow Yes No

MobilePopup Yes Yes

Page 44: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

InfoWindow

Text may be hard to readNot touch friendlyNot centered on rotate

Page 45: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

MobilePopup

ReadableTouch friendlyRotate friendly

http://developers.arcgis.com/javascript/samples/mobile_arcgis/

Page 46: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Custom Popups

Modal popup example

http://andygup.github.io/modal-popup-js/

Page 47: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Mobile Performance

Page 48: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Smartphone vs Your Laptop

App performance not the sameInternet speeds fluctuate/limitedPower limitations

Page 49: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Reducing UI Jank (Jerkiness)

Interruptions in frame production (fps) and latency

CheckerboardingLong pausesScrolling latencyDelayed animation start

Page 50: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Common causes of Jank

Slow internet response

Data processing overload

Excessive garbage collection

Page 51: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

HTTP response times

Minimize, concatenate, optimizeMake sure server uses gzip compression!Use Query MODE_ONDEMANDLimit the Extent and use layer dependenciesGeneralize features

DEMO

Page 52: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Using Web Workers

Move expensive tasks off main thread!

Parsing large number of featuresjson.parse() blocksSerialization/deserialization costsTimers

Page 53: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Background threadMain UI thread

Page 54: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Background threadMain UI thread

SER

IALI

ZE /

DE-

SER

IALI

ZE

CPU

Page 55: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Using Web Workers

https://github.com/andygup/earthquake-heatmap-layer

Example:

Parsing GeoJSON

Page 56: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Example: 7x Performance boost!

1MB of data with web workers

Without web workers

Page 57: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Garbage collection

De-reference any variables no longer in use

var feature = { feature: { … }};feature = null;

Page 58: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Managing memory in loops

Re-use objects where possibleVersus new Object();

Reset arrays: myArray.length = 0;Versus this: myArray = [];

Page 59: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Geolocation

Advanced Geolocation Session – 10a – 11a Friday

Outdoor geolocation – turn off WiFiNot very accurate – 3 – 10 meters

Page 60: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Hybrid – PhoneGap/Cordova

Wednesday 10:30am, Mesquite B

github.com/Esri/quickstart-map-phonegap

Page 61: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote

Resources

• https://github.com/lheberlie/mobile-webapps-js• https://github.com/lheberlie/mobile-webapps-js/blob/develop/Resources.md

Page 63: ArcGIS API for JavaScript Building Mobile Web Apps · Source Control. Code quality and verification. web server. Code formatting and management. ... Safari Web Inspector Remote