SlideShare une entreprise Scribd logo
1  sur  53
Télécharger pour lire hors ligne
Designing Responsive Web
Mobile Mapping Applications
Allan Laframboise
alaframboise.github.com
@AL_Laframboise
Web Mobile Design
Key Considerations
Mobile Devices
Are different…
§  Physical
§  Screen
§  Button

device

size
size
User
Interactions
Are different…
§  Touch
§  Orientation
§  Keyboard
§  Voice
User
Expectations
Are different…
§  App

to work like an app

§  Websites

to work like an app
Design Patterns
Need to be different!
Think mobile first!

320px
Responsive
Design
Strategy
Responsive Design
§  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
mediaqueri.es
Components of Responsive Design
1. 

Fluid Grid System

2. 

Media Queries

3. 

HTML5, CSS & JS
Fluid Grid System
§  Layout

adapts to different screen sizes

§  Based

on percentages

§  12

column / 960px
Media Queries
§  Detect
§  Apply

device screen size and orientation

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;!
!}!
}!
HTML5 & CSS3
§  Mobile

friendly HTML5

§  Meta

tags
§  Input types (text, dates…)
§  CSS3
§  Selectors,

transitions

§  JavaScript
§  Touch

events
§  Geolocation, localstorage,
websockets, appcache….
Developing
Responsive
Mapping Apps - I
Custom Framework
Typical “full-view” Mapping App
3 Row – 2 Column
title

menu-bar with buttons

map

side-bar
Default Behavior
Not scaling, not adapting

Higher
resolution
device

Lower resolution
device
Grid Layouts
Vertical Stacking

Vertical Stacking

Horizontal Stacking

No Stacking
One Design Strategy
Large Devices: 3 Rows - 3 Columns
Wide-screen Monitors (>1280px)

768px
Screen resolution

1024px

1280px & above
Medium Device: 2 Columns
Desktops and Laptops (1024px - 1280px)

768px
Screen resolution

1024px

&

1280px
Medium Device: 2 Columns
Desktops and Laptops (1024px - 1280px)

768px
Screen resolution

1024px

&

1280px
Small Device: Single Column
iPads and Slates (768px – 1024px)

768px
Screen resolution

&

1024px

1280px
Small Device: Single Column
Smaller iPads and Slates (768px – 1024px)

768px
Screen resolution

&

1024px

1280px
Extra Small Device: 1 Column, Minimized
iPhone, Android (< 768px)

§  Title
§  Full

map

§  Icon

tools

< 768px
Screen resolution

1024px

1280px
Extra Small Device: Windowing Options
Keyboard input and output

1. Full Screen

< 768px
Screen resolution

2. Partial Screen

1024px

1280px
Fully Responsive HTML5 Application
Adapts to all screen sizes

< 768px
Screen resolution

1024px

1280px
github.com/esri/responsive-map-js
amiresponsive.com
Developing
Responsive
Mapping Apps - II
Web Frameworks
Responsive Web Frameworks
Standardized set of HTML, CSS and JS

§  Bootstrap

3

§  Foundation

3

§  HTML5
§  Skeleton
§  YAML

4

Fonts, images, media queries, components…
www.getbootstrap.com
“mobile first”
Bootstrap-map-js
ArcGIS JavaScript in a responsive web framework

§  Bootstrap

ver 3 framework

§  Responsive
§  Resize

and re-center

§  Pop-ups,

widgets

§  Touch
§  CSS

map

Styles
Step 1: Get bootstrap-map-js
§  Bootstrap

ver 3.0...

§  srcjsbootstrapmap.js
§  srccssbootstrapmap.css
§  doc...
§  templates..
Step 2: Create a page
<!DOCTYPE html>!
<html>!
<head>!
<title>Bootstrap 101 Template</title>!
<meta name="viewport" content="width=device-width, initialscale=1.0">!
<!-- Bootstrap -->!
<link href="../assets/css/bootstrap.min.css" rel="stylesheet"
media="screen">!
</head>!
<body>!
!
<h1>Hello, world!</h1>!
!
<!-- jQuery (for Bootstrap's JavaScript plugins) -->!
<script src="../assets/js/jquery.js"></script>!
<!-- Include all plugins or individual files as needed -->!
<script src="../assets/js/bootstrap.min.js"></script>!
</body>!
</html>!
Step 3: Add a responsive map - I
<!– ArcGIS css -->!
<link rel="stylesheet" type="text/css" href="http://js.arcgis.com/3.7/
js/esri/css/esri.css"> !
!
<!-- Bootstrap-map-js css -->!
<link rel="stylesheet" type="text/css" href="../src/css/
bootstrapmap.css">
!
!
<style type="text/css”>!
#mapDiv {!
min-height: 100px; !
max-height: 1000px; !
}!
</style>!
Step 3: Add a responsive map - II
<div class="container">!
<div id="mapDiv"></div>!
</div>!
…!
<script src="http://js.arcgis.com/3.7compact"></script>!
<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>!
github.com/esri/bootstrap-map-js
A quick look inside…
Bootstrap Fluid Grid
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%
Responsive Grid: Dynamic column widths
Sets logical breaks for different screen sizes
<div class="row">!
!<div class="col-xs-12 col-sm-12 col-lg-12">!
!
!<h5>Top 12</h5>!
</div>!
</div>!
<div class="row"> !
!<div class="col-xs-12 col-sm-8 col-lg-9">!
!
!<!-- Bootstrap-map-js -->!
!
!<div id="mapDiv1"></div>!
!</div>!
!<div class="col-xs-12 col-sm-4 col-lg-3">
!
!<h5>Right 3</h5>!
!</div>!
</div>!
<div class="row">!
!<div class="col-xs-4"><h5>Bottom 4</h5></div>!
!<div class="col-xs-4"><h5>Bottom 4</h5></div>!
!<div class="col-xs-4"><h5>Bottom 4</h5></div>!
</div> >!

!
Responsive Grid: Dynamic visibility
CSS Styles
!
!
<div class="page-header hidden-xs">!
<div class="row">!
<div class="col-xs-9"><h2>Windows</h2>!
<p class="lead">Show modal and responsive pop-ups.</p>!
</div>!
<div class="col-xs-3">!
<button id="geosearchNav" type="button" class="btn btnprimary btn-lg btn-fixed-lg">Show Window</button>!
</div>!
</div>!
</div>!
Responsive Map: Viewport behavior
Prevent scaling and enable full screen browser
// Optimize for mobile – prevent scaling on pinch!
<meta name="viewport" content="width=device-width,!
initial-scale=1.0, maximum-scale=1.0, user-scalable=no”>!
!
// Safari iOS – apps only!
<meta name="apple-mobile-web-app-capable" content="yes”>!
<meta name="apple-mobile-web-app-status-bar-style" content="black”>!
// Chrome for Android - NEW!!
<meta name="mobile-web-app-capable" content="yes">!
Responsive Map: Scroll without pan
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();!
},!
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));!
Responsive Map: Auto-recentering
Maintain the geographic center

// Auto-center map!
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));!
Responsive Popups: Smart touch
Full-view position and fast touch
!
!
!
// 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);!
}));!

Tip: Listen for onTouchStart and onClick
Using Media Queries
Fixed map based on screen size
/* Extra small devices (phones, up to 480px) */!
@media (max-width: 480px) {!
.map { height: 100px; }!
}!
!
!
!

/* Small devices (tablets, 768px and up) */!
@media (min-width: 768px) {!
.map { height: 200px; }!
}!

!
/* Medium devices (desktops, 992px and up) */!
@media (min-width: 992px) {!
.map { height: 300px; }!
}!
!
/* Large devices (large desktops, 1200px and up) */!
@media (min-width: 1200px) {!
.map { height: 400px; }!
}!
Other Tips and Tricks
§  Watch

for .container CSS

§  Remove
§  Listen

delay

all :hover states

for onTouchStart and click to avoid 300ms
github.com/esri/bootstrap-map-js
Final Notes
§  Write

code once

§  Write

is “responsively”

§  Make

your maps responsive

§  Know

your device

§  Know

you user

Don’t re-invent the wheel!
Questions?
@AL_Laframbose
alaframboise.github.com
Building responsive web mobile mapping applications

Contenu connexe

Tendances

Mobile GIS in the Browser (by Adam Conner)
Mobile GIS in the Browser (by Adam Conner)Mobile GIS in the Browser (by Adam Conner)
Mobile GIS in the Browser (by Adam Conner)
geeknixta
 
Virtual Earth And ESRI
Virtual Earth And ESRIVirtual Earth And ESRI
Virtual Earth And ESRI
Tim Warr
 
Lotusphere 2006 BP305 Combine Xsl And DXL For Rich Web Applications
Lotusphere 2006 BP305 Combine Xsl And DXL For Rich Web ApplicationsLotusphere 2006 BP305 Combine Xsl And DXL For Rich Web Applications
Lotusphere 2006 BP305 Combine Xsl And DXL For Rich Web Applications
dominion
 

Tendances (14)

Mobile GIS in the Browser (by Adam Conner)
Mobile GIS in the Browser (by Adam Conner)Mobile GIS in the Browser (by Adam Conner)
Mobile GIS in the Browser (by Adam Conner)
 
Trail of Two Maps
Trail of Two MapsTrail of Two Maps
Trail of Two Maps
 
Virtual Earth And ESRI
Virtual Earth And ESRIVirtual Earth And ESRI
Virtual Earth And ESRI
 
Intuit Mobile Custom Views
Intuit Mobile Custom ViewsIntuit Mobile Custom Views
Intuit Mobile Custom Views
 
Doag wysiwyg
Doag wysiwygDoag wysiwyg
Doag wysiwyg
 
2d web mapping with flask
2d web mapping with flask2d web mapping with flask
2d web mapping with flask
 
Responsive Web Site Design
Responsive Web Site DesignResponsive Web Site Design
Responsive Web Site Design
 
NACIS 2012 talk
NACIS 2012 talkNACIS 2012 talk
NACIS 2012 talk
 
ArcGIS Runtime For Android
ArcGIS Runtime For AndroidArcGIS Runtime For Android
ArcGIS Runtime For Android
 
HTML5 and ARIA accessibility - Bangalore 2013
HTML5 and ARIA accessibility - Bangalore 2013HTML5 and ARIA accessibility - Bangalore 2013
HTML5 and ARIA accessibility - Bangalore 2013
 
Blurring the lines - VGI in aid of Prof. GIS
Blurring the lines - VGI in aid of Prof. GISBlurring the lines - VGI in aid of Prof. GIS
Blurring the lines - VGI in aid of Prof. GIS
 
Serverless - Developers.IO 2019
Serverless - Developers.IO 2019Serverless - Developers.IO 2019
Serverless - Developers.IO 2019
 
Lotusphere 2006 BP305 Combine Xsl And DXL For Rich Web Applications
Lotusphere 2006 BP305 Combine Xsl And DXL For Rich Web ApplicationsLotusphere 2006 BP305 Combine Xsl And DXL For Rich Web Applications
Lotusphere 2006 BP305 Combine Xsl And DXL For Rich Web Applications
 
Power and Elegance - Leaflet + jQuery
Power and Elegance - Leaflet + jQueryPower and Elegance - Leaflet + jQuery
Power and Elegance - Leaflet + jQuery
 

En vedette

Mvrpc Safe Routes forum 2013 sumary
Mvrpc Safe Routes forum 2013 sumaryMvrpc Safe Routes forum 2013 sumary
Mvrpc Safe Routes forum 2013 sumary
MVRPC
 
5310 map August Tranportation Coordination
5310 map August Tranportation Coordination5310 map August Tranportation Coordination
5310 map August Tranportation Coordination
MVRPC
 

En vedette (20)

Playing with Maps using AngularJS
Playing with Maps using AngularJSPlaying with Maps using AngularJS
Playing with Maps using AngularJS
 
Mvrpc Safe Routes forum 2013 sumary
Mvrpc Safe Routes forum 2013 sumaryMvrpc Safe Routes forum 2013 sumary
Mvrpc Safe Routes forum 2013 sumary
 
Full planning support system at your fingertips mvopc p&amp;z_120712
Full planning support system at your fingertips mvopc p&amp;z_120712Full planning support system at your fingertips mvopc p&amp;z_120712
Full planning support system at your fingertips mvopc p&amp;z_120712
 
GIS MVRPC
GIS MVRPCGIS MVRPC
GIS MVRPC
 
5310 map August Tranportation Coordination
5310 map August Tranportation Coordination5310 map August Tranportation Coordination
5310 map August Tranportation Coordination
 
GIS in the Miami Valley Region
GIS in the Miami Valley RegionGIS in the Miami Valley Region
GIS in the Miami Valley Region
 
Regionalsurveyresults final 081215
Regionalsurveyresults final 081215Regionalsurveyresults final 081215
Regionalsurveyresults final 081215
 
2013 Mission First Track, How GIS Supports USAFA's Civil Engineer Squadron by...
2013 Mission First Track, How GIS Supports USAFA's Civil Engineer Squadron by...2013 Mission First Track, How GIS Supports USAFA's Civil Engineer Squadron by...
2013 Mission First Track, How GIS Supports USAFA's Civil Engineer Squadron by...
 
StartPad Countdown 5 - Google Geo: Mobile Mapping
StartPad Countdown 5 - Google Geo: Mobile MappingStartPad Countdown 5 - Google Geo: Mobile Mapping
StartPad Countdown 5 - Google Geo: Mobile Mapping
 
Lec 1&amp;2
Lec 1&amp;2Lec 1&amp;2
Lec 1&amp;2
 
Asset mapping nov_2013
Asset mapping nov_2013Asset mapping nov_2013
Asset mapping nov_2013
 
Asset-Mapping and more - an outline proposal for a pan-Scotland Learning Set
Asset-Mapping and more - an outline proposal for a pan-Scotland Learning SetAsset-Mapping and more - an outline proposal for a pan-Scotland Learning Set
Asset-Mapping and more - an outline proposal for a pan-Scotland Learning Set
 
Thinking about Asset-mapping
Thinking about Asset-mappingThinking about Asset-mapping
Thinking about Asset-mapping
 
The systematic design of instruction dick and carey
The systematic design of instruction  dick and careyThe systematic design of instruction  dick and carey
The systematic design of instruction dick and carey
 
GIS and Asset Management Moving to the Future :
GIS and Asset Management  Moving to the Future : GIS and Asset Management  Moving to the Future :
GIS and Asset Management Moving to the Future :
 
Gis applications in civil engineering
Gis applications in civil engineeringGis applications in civil engineering
Gis applications in civil engineering
 
2016 gisco track: gis and asset management by charles osterman
2016 gisco track: gis and asset management by charles osterman2016 gisco track: gis and asset management by charles osterman
2016 gisco track: gis and asset management by charles osterman
 
An Introduction to Mapping, GIS and Spatial Modelling in R (presentation)
An Introduction to Mapping, GIS and Spatial Modelling in R (presentation)An Introduction to Mapping, GIS and Spatial Modelling in R (presentation)
An Introduction to Mapping, GIS and Spatial Modelling in R (presentation)
 
Intro to GIS Mapping Webinar
Intro to GIS Mapping Webinar Intro to GIS Mapping Webinar
Intro to GIS Mapping Webinar
 
civil engineer
civil engineercivil engineer
civil engineer
 

Similaire à Building responsive web mobile mapping applications

Responsive web design & mobile web development - a technical and business app...
Responsive web design & mobile web development - a technical and business app...Responsive web design & mobile web development - a technical and business app...
Responsive web design & mobile web development - a technical and business app...
Atos_Worldline
 
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Esri Nederland
 
Responsive UX - One size fits all @BigDesign conference #BigD12
Responsive UX - One size fits all   @BigDesign conference #BigD12Responsive UX - One size fits all   @BigDesign conference #BigD12
Responsive UX - One size fits all @BigDesign conference #BigD12
touchtitans
 

Similaire à Building responsive web mobile mapping applications (20)

2013 URISA Track, Kickstarter for JavaScript Web and Mobile GIS Development b...
2013 URISA Track, Kickstarter for JavaScript Web and Mobile GIS Development b...2013 URISA Track, Kickstarter for JavaScript Web and Mobile GIS Development b...
2013 URISA Track, Kickstarter for JavaScript Web and Mobile GIS Development b...
 
3 Approaches to Mobile - An A to Z Primer.
3 Approaches to Mobile - An A to Z Primer.3 Approaches to Mobile - An A to Z Primer.
3 Approaches to Mobile - An A to Z Primer.
 
Multi screen HTML5
Multi screen HTML5Multi screen HTML5
Multi screen HTML5
 
Responsive web design & mobile web development - a technical and business app...
Responsive web design & mobile web development - a technical and business app...Responsive web design & mobile web development - a technical and business app...
Responsive web design & mobile web development - a technical and business app...
 
Skill Session - Web Multi Device
Skill Session - Web Multi DeviceSkill Session - Web Multi Device
Skill Session - Web Multi Device
 
Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...Responsive design: techniques and tricks to prepare your websites for the mul...
Responsive design: techniques and tricks to prepare your websites for the mul...
 
Great Responsive-ability Web Design
Great Responsive-ability Web DesignGreat Responsive-ability Web Design
Great Responsive-ability Web Design
 
Responsive Websites
Responsive WebsitesResponsive Websites
Responsive Websites
 
Best Practices for Mobile Web Design
Best Practices for Mobile Web DesignBest Practices for Mobile Web Design
Best Practices for Mobile Web Design
 
The Mobile Development Landscape
The Mobile Development LandscapeThe Mobile Development Landscape
The Mobile Development Landscape
 
Web Development for UX Designers
Web Development for UX DesignersWeb Development for UX Designers
Web Development for UX Designers
 
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
Building mobile apps with the ArcGIS api for Javascript, Esri, Andy Gup and A...
 
Responsive websites. Toolbox
Responsive websites. ToolboxResponsive websites. Toolbox
Responsive websites. Toolbox
 
Once Source to Rule Them All
Once Source to Rule Them AllOnce Source to Rule Them All
Once Source to Rule Them All
 
Responsive UX - One size fits all @BigDesign conference #BigD12
Responsive UX - One size fits all   @BigDesign conference #BigD12Responsive UX - One size fits all   @BigDesign conference #BigD12
Responsive UX - One size fits all @BigDesign conference #BigD12
 
Responsive Web Design: Tips and Tricks
Responsive Web Design: Tips and TricksResponsive Web Design: Tips and Tricks
Responsive Web Design: Tips and Tricks
 
Designing for the Mobile Web
Designing for the Mobile WebDesigning for the Mobile Web
Designing for the Mobile Web
 
"Designing for the Mobile Web" by Michael Dick (December 2010)
"Designing for the Mobile Web" by Michael Dick (December 2010)"Designing for the Mobile Web" by Michael Dick (December 2010)
"Designing for the Mobile Web" by Michael Dick (December 2010)
 
Making your site mobile-friendly - DevCSI Reading 21.07.2010
Making your site mobile-friendly - DevCSI Reading 21.07.2010Making your site mobile-friendly - DevCSI Reading 21.07.2010
Making your site mobile-friendly - DevCSI Reading 21.07.2010
 
Pinkoi Mobile Web
Pinkoi Mobile WebPinkoi Mobile Web
Pinkoi Mobile Web
 

Plus de Allan Laframboise

UX Considerations for Touch Mapping Apps
UX Considerations for Touch Mapping AppsUX Considerations for Touch Mapping Apps
UX Considerations for Touch Mapping Apps
Allan Laframboise
 
Geo services, social media and gis applications - Live on Everest
Geo services, social media and gis applications - Live on EverestGeo services, social media and gis applications - Live on Everest
Geo services, social media and gis applications - Live on Everest
Allan Laframboise
 

Plus de Allan Laframboise (14)

Esri Map App Builders
Esri Map App BuildersEsri Map App Builders
Esri Map App Builders
 
Esri open source projects on GitHub
Esri open source projects on GitHubEsri open source projects on GitHub
Esri open source projects on GitHub
 
Nutrition and Race Planning for Mountain Bikers
Nutrition and Race Planning for Mountain BikersNutrition and Race Planning for Mountain Bikers
Nutrition and Race Planning for Mountain Bikers
 
GitHub + Mapping Apps in 100 lines or less using the ArcGIS API for JavaScript
GitHub + Mapping Apps in 100 lines or less using the ArcGIS API for JavaScriptGitHub + Mapping Apps in 100 lines or less using the ArcGIS API for JavaScript
GitHub + Mapping Apps in 100 lines or less using the ArcGIS API for JavaScript
 
UX Considerations for Touch Mapping Apps
UX Considerations for Touch Mapping AppsUX Considerations for Touch Mapping Apps
UX Considerations for Touch Mapping Apps
 
Building ArcGIS Mobile Solutions in the Cloud
Building ArcGIS Mobile Solutions in the CloudBuilding ArcGIS Mobile Solutions in the Cloud
Building ArcGIS Mobile Solutions in the Cloud
 
Live on everest
Live on everestLive on everest
Live on everest
 
Navteq Developer Days - ArcGIS + POI
Navteq Developer Days - ArcGIS + POINavteq Developer Days - ArcGIS + POI
Navteq Developer Days - ArcGIS + POI
 
Geo services, social media and gis applications - Live on Everest
Geo services, social media and gis applications - Live on EverestGeo services, social media and gis applications - Live on Everest
Geo services, social media and gis applications - Live on Everest
 
Where are you with gis and geolocation
Where are you with gis and geolocationWhere are you with gis and geolocation
Where are you with gis and geolocation
 
Gis & Social Media Integration
Gis & Social Media IntegrationGis & Social Media Integration
Gis & Social Media Integration
 
Social #WebApps - Ideas for developing GIS applications that are socially a ”...
Social #WebApps - Ideas for developing GIS applications that are socially a ”...Social #WebApps - Ideas for developing GIS applications that are socially a ”...
Social #WebApps - Ideas for developing GIS applications that are socially a ”...
 
What Is GIS?
What Is GIS?What Is GIS?
What Is GIS?
 
GeoWeb Community Development: How Web 2.0 are you?
GeoWeb Community Development: How Web 2.0 are you?GeoWeb Community Development: How Web 2.0 are you?
GeoWeb Community Development: How Web 2.0 are you?
 

Dernier

Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
WSO2
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 

Dernier (20)

Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
Apidays Singapore 2024 - Scalable LLM APIs for AI and Generative AI Applicati...
 
Architecting Cloud Native Applications
Architecting Cloud Native ApplicationsArchitecting Cloud Native Applications
Architecting Cloud Native Applications
 
DBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor PresentationDBX First Quarter 2024 Investor Presentation
DBX First Quarter 2024 Investor Presentation
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
ICT role in 21st century education and its challenges
ICT role in 21st century education and its challengesICT role in 21st century education and its challenges
ICT role in 21st century education and its challenges
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
A Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source MilvusA Beginners Guide to Building a RAG App Using Open Source Milvus
A Beginners Guide to Building a RAG App Using Open Source Milvus
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 

Building responsive web mobile mapping applications

  • 1. Designing Responsive Web Mobile Mapping Applications Allan Laframboise alaframboise.github.com @AL_Laframboise
  • 2.
  • 3. Web Mobile Design Key Considerations
  • 4. Mobile Devices Are different… §  Physical §  Screen §  Button device size size
  • 5. User Interactions Are different… §  Touch §  Orientation §  Keyboard §  Voice
  • 6. User Expectations Are different… §  App to work like an app §  Websites to work like an app
  • 7. Design Patterns Need to be different!
  • 10. Responsive Design §  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
  • 12. Components of Responsive Design 1.  Fluid Grid System 2.  Media Queries 3.  HTML5, CSS & JS
  • 13. Fluid Grid System §  Layout adapts to different screen sizes §  Based on percentages §  12 column / 960px
  • 14. Media Queries §  Detect §  Apply device screen size and orientation 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;! !}! }!
  • 15. HTML5 & CSS3 §  Mobile friendly HTML5 §  Meta tags §  Input types (text, dates…) §  CSS3 §  Selectors, transitions §  JavaScript §  Touch events §  Geolocation, localstorage, websockets, appcache….
  • 17. Typical “full-view” Mapping App 3 Row – 2 Column title menu-bar with buttons map side-bar
  • 18. Default Behavior Not scaling, not adapting Higher resolution device Lower resolution device
  • 19. Grid Layouts Vertical Stacking Vertical Stacking Horizontal Stacking No Stacking
  • 21. Large Devices: 3 Rows - 3 Columns Wide-screen Monitors (>1280px) 768px Screen resolution 1024px 1280px & above
  • 22. Medium Device: 2 Columns Desktops and Laptops (1024px - 1280px) 768px Screen resolution 1024px & 1280px
  • 23. Medium Device: 2 Columns Desktops and Laptops (1024px - 1280px) 768px Screen resolution 1024px & 1280px
  • 24. Small Device: Single Column iPads and Slates (768px – 1024px) 768px Screen resolution & 1024px 1280px
  • 25. Small Device: Single Column Smaller iPads and Slates (768px – 1024px) 768px Screen resolution & 1024px 1280px
  • 26. Extra Small Device: 1 Column, Minimized iPhone, Android (< 768px) §  Title §  Full map §  Icon tools < 768px Screen resolution 1024px 1280px
  • 27. Extra Small Device: Windowing Options Keyboard input and output 1. Full Screen < 768px Screen resolution 2. Partial Screen 1024px 1280px
  • 28. Fully Responsive HTML5 Application Adapts to all screen sizes < 768px Screen resolution 1024px 1280px
  • 31. Responsive Web Frameworks Standardized set of HTML, CSS and JS §  Bootstrap 3 §  Foundation 3 §  HTML5 §  Skeleton §  YAML 4 Fonts, images, media queries, components…
  • 33. Bootstrap-map-js ArcGIS JavaScript in a responsive web framework §  Bootstrap ver 3 framework §  Responsive §  Resize and re-center §  Pop-ups, widgets §  Touch §  CSS map Styles
  • 34. Step 1: Get bootstrap-map-js §  Bootstrap ver 3.0... §  srcjsbootstrapmap.js §  srccssbootstrapmap.css §  doc... §  templates..
  • 35. Step 2: Create a page <!DOCTYPE html>! <html>! <head>! <title>Bootstrap 101 Template</title>! <meta name="viewport" content="width=device-width, initialscale=1.0">! <!-- Bootstrap -->! <link href="../assets/css/bootstrap.min.css" rel="stylesheet" media="screen">! </head>! <body>! ! <h1>Hello, world!</h1>! ! <!-- jQuery (for Bootstrap's JavaScript plugins) -->! <script src="../assets/js/jquery.js"></script>! <!-- Include all plugins or individual files as needed -->! <script src="../assets/js/bootstrap.min.js"></script>! </body>! </html>!
  • 36. Step 3: Add a responsive map - I <!– ArcGIS css -->! <link rel="stylesheet" type="text/css" href="http://js.arcgis.com/3.7/ js/esri/css/esri.css"> ! ! <!-- Bootstrap-map-js css -->! <link rel="stylesheet" type="text/css" href="../src/css/ bootstrapmap.css"> ! ! <style type="text/css”>! #mapDiv {! min-height: 100px; ! max-height: 1000px; ! }! </style>!
  • 37. Step 3: Add a responsive map - II <div class="container">! <div id="mapDiv"></div>! </div>! …! <script src="http://js.arcgis.com/3.7compact"></script>! <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>!
  • 39. A quick look inside…
  • 40. Bootstrap Fluid Grid 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%
  • 41. Responsive Grid: Dynamic column widths Sets logical breaks for different screen sizes <div class="row">! !<div class="col-xs-12 col-sm-12 col-lg-12">! ! !<h5>Top 12</h5>! </div>! </div>! <div class="row"> ! !<div class="col-xs-12 col-sm-8 col-lg-9">! ! !<!-- Bootstrap-map-js -->! ! !<div id="mapDiv1"></div>! !</div>! !<div class="col-xs-12 col-sm-4 col-lg-3"> ! !<h5>Right 3</h5>! !</div>! </div>! <div class="row">! !<div class="col-xs-4"><h5>Bottom 4</h5></div>! !<div class="col-xs-4"><h5>Bottom 4</h5></div>! !<div class="col-xs-4"><h5>Bottom 4</h5></div>! </div> >! !
  • 42. Responsive Grid: Dynamic visibility CSS Styles ! ! <div class="page-header hidden-xs">! <div class="row">! <div class="col-xs-9"><h2>Windows</h2>! <p class="lead">Show modal and responsive pop-ups.</p>! </div>! <div class="col-xs-3">! <button id="geosearchNav" type="button" class="btn btnprimary btn-lg btn-fixed-lg">Show Window</button>! </div>! </div>! </div>!
  • 43. Responsive Map: Viewport behavior Prevent scaling and enable full screen browser // Optimize for mobile – prevent scaling on pinch! <meta name="viewport" content="width=device-width,! initial-scale=1.0, maximum-scale=1.0, user-scalable=no”>! ! // Safari iOS – apps only! <meta name="apple-mobile-web-app-capable" content="yes”>! <meta name="apple-mobile-web-app-status-bar-style" content="black”>! // Chrome for Android - NEW!! <meta name="mobile-web-app-capable" content="yes">!
  • 44. Responsive Map: Scroll without pan 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();! },!
  • 45. 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));!
  • 46. Responsive Map: Auto-recentering Maintain the geographic center // Auto-center map! 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));!
  • 47. Responsive Popups: Smart touch Full-view position and fast touch ! ! ! // 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);! }));! Tip: Listen for onTouchStart and onClick
  • 48. Using Media Queries Fixed map based on screen size /* Extra small devices (phones, up to 480px) */! @media (max-width: 480px) {! .map { height: 100px; }! }! ! ! ! /* Small devices (tablets, 768px and up) */! @media (min-width: 768px) {! .map { height: 200px; }! }! ! /* Medium devices (desktops, 992px and up) */! @media (min-width: 992px) {! .map { height: 300px; }! }! ! /* Large devices (large desktops, 1200px and up) */! @media (min-width: 1200px) {! .map { height: 400px; }! }!
  • 49. Other Tips and Tricks §  Watch for .container CSS §  Remove §  Listen delay all :hover states for onTouchStart and click to avoid 300ms
  • 51. Final Notes §  Write code once §  Write is “responsively” §  Make your maps responsive §  Know your device §  Know you user Don’t re-invent the wheel!