designing and building responsive arcgis web apps … · fluid grid system ... designing and...

36
Designing and Building Responsive ArcGIS Web Apps with Web Frameworks Al Laframboise Matt Driscoll @AL_Laframboise @driskull alaframboise.github.com driskull.github.com

Upload: nguyentuyen

Post on 13-Sep-2018

220 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Designing and Building Responsive ArcGIS Web Apps with Web Frameworks

Al Laframboise Matt Driscoll @AL_Laframboise @driskull

alaframboise.github.com driskull.github.com

Page 2: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

What is it?

Responsive Design

Page 3: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

• Designing a single web page/app that works well across a variety of devices and screen sizes

• Re-use content and software

• Considers - Device limitations - User’s behavior

Responsive Design

Page 4: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Most web mapping apps… Scaling? Adapting?

Higher resolution

device

Lower resolution device

Page 5: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

App Design Options Vertical Stacking

No Stacking

Horizontal Stacking

Page 6: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Think mobile first!

320px Real estate is precious

Page 7: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

1 - 2 - 3

Components of Responsive Design

Page 8: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

1. Fluid Grid System

• Layout adapts to different screen sizes • Based on percentages • 12 column / 960px

Page 9: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

2. Media Queries

§Detect device screen size and orientation §Apply CSS at specific break points § Typical: 480px, 768px, 1024px, 1280px

@media only screen and (max-device-width:480px) { /* Custom css styles */ body { font-size: 0.5em; } #titleArea{ display: none; } }

Page 10: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

3. HTML5 & CSS3

• Mobile friendly HTML5 - Meta tags - Input types (text, dates…)

• CSS3 - Selectors, transitions

• JavaScript - Touch events - Geolocation, localstorage, websockets, appcache….

Page 11: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Roll your own approach

Developing Responsive Mapping Apps - I

Page 12: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive
Page 13: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Considerations

• Full Screen? - Pros

- Can be embedded - More space to interact

- Cons - No scroll - Requires different approach

Not Full Screen

100% width x 100% height

Page 15: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Responsive Tips

Page 16: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Viewport

<meta name="viewport" content="width=device-width, initial-scale=1">

Page 17: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Web App Capable • // Safari iOS – apps only • <meta name="apple-mobile-web-app-capable" content="yes”>

• // Chrome for Android - NEW! • <meta name="mobile-web-app-capable" content="yes">

Page 18: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Finger Targets

Page 19: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Lend a hand to IE

• <!--[if lt IE 9]><script type="text/javascript“ src="js/respond.min.js"></script><![endif]-->

• https://github.com/scottjehl/Respond

Page 20: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Make sure your assets Scale • Icon Fonts • SVG • Responsive image tecniques

Page 21: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Responsinator www.responsinator.com/?url=

Page 22: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

github.com/esri/responsive-map-js

Page 23: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Web Frameworks

Developing Responsive Mapping Apps - II

Page 24: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Responsive Web Frameworks Standardized set of HTML, CSS and JS

• Bootstrap 3 • Foundation 3 • HTML5 • Skeleton • YAML 4

Fonts, images, media queries, components…

Page 25: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

www.getbootstrap.com “mobile first”

Page 26: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Bootstrap-map-js ArcGIS JavaScript in a responsive web framework

• Bootstrap ver 3 framework • Responsive map • Resize and re-center • Pop-ups, widgets • Touch • CSS Styles

Page 27: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Bootstrap-map Example

<div class="container"> <div id="mapDiv"></div> </div> … <script> <!– Load Bootstrap Map – responsive map --> require(["esri/map", "…/src/js/bootstrapmap.js", "dojo/domReady!"], function(Map, BootstrapMap) { <!-- Get a reference to the ArcGIS Map --> var map = BootstrapMap.create("mapDiv",{ basemap:"national-geographic", center:[-122.45,37.77], zoom:12 }); }); </script>

Page 28: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Responsive Mapping Tips

Page 29: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Responsive grid styling CSS to define row and column behavior

Row 1: col-lg-12 = 100% Row 2: col-lg-9 = 75% + col-lg-3 = 25% Row 3: col-xs-4 + col-xs-4 + col-xs-4 = 100%

Page 30: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Auto map re-centering Maintain the geographic center

var recenter = function(extent, width, height) { this._map.__resizeCenter = this._map.extent.getCenter(); var timer = function() { this._map.centerAt(this._map.__resizeCenter); } setTimeout(lang.hitch(this, timer), this._delay); } on(window, "resize", lang.hitch(this, recenter));

Page 31: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Responsive popups Full-view position and fast touch

Tip: Listen for onTouchStart and onClick

// Smart-center popup var updatePopup = function(obj) { var infoW = obj._map.infoWindow; updateTitle(infoW); obj._repositionInfoWin(infoW.features[0]); } on(this._map.graphics, "click", lang.hitch(this, function(){ updatePopup(this); }));

Page 32: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Page scroll without panning Separate page and map navigation

// Set touch behavior createMap: function() { var options = {smartNavigation:false}); var map = new Map(mapDiv,options); map.on(‘load’, this.setTouchBehavior); return map; }, setTouchBehavior: function() { this.disableScrollWheelZoom(); },

Page 33: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Responsive map auto-resizing Scale to all devices and windows

// Responsive resize var resizeWin function() { var w = window.innerHeight; if (w != this._w) { this._w = w; var b = document.body.clientHeight; var mh = this._mapDiv.clientHeight; var ms = this._calcSpace(this._mapDiv); var mh1 = mh - ms; var room = w - b; var mh2 = room + mh1; style.set(this._mapDivId, {"height": mh2+"px"}); } } on(window, "resize", lang.hitch(this, resizeWin));

Page 34: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

github.com/esri/bootstrap-map-js

ami.responsive.is

Page 35: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive

Final Notes

• Design for mobile first • Write code once • Write code “responsively” • Use frameworks • Use online tools to test Small responsive enhancements go a long way…

Page 36: Designing and Building Responsive ArcGIS Web Apps … · Fluid Grid System ... Designing and Building Responsive ArcGIS Web Apps with Web Frameworks ... Designing and Building Responsive