SlideShare une entreprise Scribd logo
1  sur  48
UX Considerations for Mapping Apps
on Touch Devices

“Touch-friendly mapping apps”



Allan Laframboise
Frank Garofalo



                           #uxmaptouchapp #esriuc #mapux #gisux
So you’ve got a web mapping app…




                        #uxmaptouchapp #esriuc #mapux #gisux
So you’ve got a web mapping app…
             …is it usable on a touch device?




                         #uxmaptouchapp #esriuc #mapux #gisux
#uxmaptouchapp #esriuc #mapux #gisux
Why?




       #uxmaptouchapp #esriuc #mapux #gisux
Time                     Design
       Cost


              Knowledge


Standards

        Technical Limitations


                   #uxmaptouchapp #esriuc #mapux #gisux
it’s a jungle out there!




                           #uxmaptouchapp #esriuc #mapux #gisux
it’s a jungle out there!




                                               Touch


                           #uxmaptouchapp #esriuc #mapux #gisux
touch = mouseless




             #uxmaptouchapp #esriuc #mapux #gisux
Device challenges

 Viewports

 Interaction

 Processors/speed

 Connectivity




                    #uxmaptouchapp #esriuc #mapux #gisux
Viewports - Resolution/Orientation

 1024, 768,480,320

 Rotation, orientation

 UX
   • Handling physical device
   • Large screen size = small buttons (OK!)
   • Small screen size = big buttons (challenge!)
   • Glare, fingerprints…




                                    #uxmaptouchapp #esriuc #mapux #gisux
Interaction - Keyboard vs mouse vs touch

 •   Physical differences… / Input

 •   Form factor

 •   UX
     • Click vs tap vs voice
     • Mouse cursor vs direct interaction (finger)
     • Keyboard shortcuts vs gestures
     • Right-click, mouse over (don’t exist)




                                      #uxmaptouchapp #esriuc #mapux #gisux
Processor Speed & Connectivity

 -   Connected & Disconnected

 -   Wifi vs mobile

 -   UX
     - user feedback one when connection status
     - too slow due to connection speed
     - out of memory/memory limitations




                                    #uxmaptouchapp #esriuc #mapux #gisux
Mapping dev challenges

 Mouse vs touch events

 Mouse vs touch vs mapping events

 Usability




                            #uxmaptouchapp #esriuc #mapux #gisux
So where do I start?




               #uxmaptouchapp #esriuc #mapux #gisux
Think mobile first




              #uxmaptouchapp #esriuc #mapux #gisux
Think relevance




            #uxmaptouchapp #esriuc #mapux #gisux
Think simple




          #uxmaptouchapp #esriuc #mapux #gisux
Think reusable (content)




                #uxmaptouchapp #esriuc #mapux #gisux
Think “responsive”




             #uxmaptouchapp #esriuc #mapux #gisux
Your app running everywhere…




                       #uxmaptouchapp #esriuc #mapux #gisux
Plan/design for each device
What is most relevant?




                              #uxmaptouchapp #esriuc #mapux #gisux
Mock-up first (mobile, tablet & desktop)




                           #uxmaptouchapp #esriuc #mapux #gisux
Use case: Javascript Dev Starter App

     Web app


     Touch


     Responsive


     Good UX




                              #uxmaptouchapp #esriuc #mapux #gisux
Dev solutions, thinking responsive...

  Touch

  Fluid layout (960 grid)

  Media Queries – screen, print, handheld

  Smart css




                              #uxmaptouchapp #esriuc #mapux #gisux
Touch

 Minimum “press-able” area 36px x 36px

 Keep “press-able” elements away from edges

 No right-click & hover / mouse-over for touch

 Avoid the "double tap"

 Gestures should be used as shortcuts


                             #uxmaptouchapp #esriuc #mapux #gisux
Fluid Explained…

 Percentage based widths

 960 grid system (www.960.gs)


                            grid_16



          grid_5                      grid_11



                   grid_8                   grid_8



                                      #uxmaptouchapp #esriuc #mapux #gisux
Media Query

   @media
     @media all and ( min-width : 768px ) and ( max-width : 1024px ) and
         ( orientation : portrait ) { … }                                /* Tablet - Portrait */


     @media all and ( min-width: 768px ) and ( max-width : 1024px ) and
         (max-height : 768px) and ( orientation : landscape ) { … }         /* Tablet - Landscape */


     @media all and ( min-width: 321px ) and ( max-width: 480px ) { … }     /* Smartphone - Landscape */


     @media all and ( max-width: 320px ) { … }                              /* Smartphone - Portrait */


     @media all and ( min-width: 800px ) and ( min-height: 800px ) and
         ( max-width: 1279px ) { … }                                        /* Desktop */


     @media all and ( min-width : 1280px ) { … }                            /* Desktop - Wide Screen */


Resource: http://css-tricks.com/snippets/css/media-queries-for-standard-devices/

                                                                  #uxmaptouchapp #esriuc #mapux #gisux
Smart CSS
    <body class = “ … ” >

    “ui_iOS ui_iOS_iPhone”      “ui_Android ui_AndroidPhone”      “ui_Win ui_Win7_Phone”




Same HTML with different CSS applied

                                                       #uxmaptouchapp #esriuc #mapux #gisux
Mobile browser challenges…




Tool bars take up space too!



                               #uxmaptouchapp #esriuc #mapux #gisux
Touch-friendly dev




             #uxmaptouchapp #esriuc #mapux #gisux
ArcGIS Javascript Compact


<script
type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.0compact">
</script




                                                       #uxmaptouchapp #esriuc #mapux #gisux
Viewport and orientation

<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,
     user-scalable=no"/>
…

"autoResize": function ( window ) {
  var supportsOrientationChange = "onorientationchange" in window,
       orientationEvent = supportsOrientationChange ? "orientationchange" : "resize";

     function orientationChanged( map ) {
       if (map) {
           map.resize();
           map.reposition();
       }
     }

     // Attach
     if ( window.addEventListener )
         window.addEventListener( orientationEvent, function () { orientationChanged(map); }, false );
},




                                                                #uxmaptouchapp #esriuc #mapux #gisux
Device detection
var mobileDevice = {
  Android: function () {
     return navigator.userAgent.match(/Android/i) ? true : false;
  },
  BlackBerry: function () {
     return navigator.userAgent.match(/BlackBerry/i) ? true : false;
  },
  iPhone: function () {
     return navigator.userAgent.match(/iPhone|iPod/i) ? true : false;
  },
  iPad: function () {
     return navigator.userAgent.match(/iPad/i) ? true : false;
  },
  Windows: function () {
     return navigator.userAgent.match(/IEMobile/i) ? true : false;
  },
  any: function () {
     return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iPhone() || isMobile.iPad()
              || isMobile.Windows());
  }




                                                               #uxmaptouchapp #esriuc #mapux #gisux
Events: onclick vs ontouchstart

 <button id="addPoint" class="buttonControls" onclick="setActiveTool(this);"
 ontouchstart ="setActiveTool(this);"><span class="buttonLabel">Add Point</span></button>

 <button id="addLine" class="buttonControls" onclick="setActiveTool(this);"
 ontouchstart ="setActiveTool(this);"><span class="buttonLabel">Add Point</span></button>

 <button id="addPolygon" class="buttonControls" onclick="setActiveTool(this);"
 ontouchstart ="setActiveTool(this);"><span class="buttonLabel">Add Point</span></button>

 <button id="clearGraphics" class="buttonControls" onclick="setActiveTool(this);"
 ontouchstart ="setActiveTool(null);"><span class="buttonLabel">Add Point</span></button>




                   onmousedown + onclick = ontouchstart

                   ontouchstart != onmousedown || onclick



                                                         #uxmaptouchapp #esriuc #mapux #gisux
Events: No onmouseover (hover)

<div id="containerMenu" class="">

         <div id="basemaps" class="buttonNav selected" onmouseover="setActiveModule( this, true );"
                ontouchstart="setActiveModule( this, true );"><p>Basemaps</p></div>

         <div id="geolocation" class="buttonNav" onmouseover="setActiveModule( this, true );"
                ontouchstart ="setActiveModule( this, true );"><p>Geolocation</p></div>

         <div id="graphics" class="buttonNav" onmouseover="setActiveModule( this, true );"
                ontouchstart ="setActiveModule( this, false );"><p>Add Graphics</p></div>

         <div id="findAddress" class="buttonNav" onmouseover="setActiveModule( this, true );"
                ontouchstart ="setActiveModule( this, true );"><p>Find Place</p></div>
         …

</div>




                                                            #uxmaptouchapp #esriuc #mapux #gisux
Events: No doubleclick
function addGraphicCallback( evt ) {

      var pt = evt.mapPoint;
      clearAddGraphics( false );

      var finished = ( evt.type == "dblclick" || evt.type == "touchend“ );

      switch ( activeToolId )
      {
            case 'addPoint':
               addPoint( pt, finished );
               break;
            case 'addLine':
               addLine( pt, finished );
               break;
            case 'addPolygon':
               addPolygon( pt, finished );
               break;
            default:
      }
}



                                                              #uxmaptouchapp #esriuc #mapux #gisux
Locking map navigation

function setActiveTool ( ctrl, active) {
   lockMapNavigation( active );
   …
}

function lockMapNavigation( lock ) {

     if ( lock ) {
         map.disableDoubleClickZoom();
         map.disableClickRecenter();
         map.disablePan();
     } else {
         map.enableDoubleClickZoom();
         map.enableClickRecenter();
         map.enablePan();
     }

 }




                                           #uxmaptouchapp #esriuc #mapux #gisux
Final UX thoughts
Toggle - turn tools on and off (expected)

Guide your user
   - “just-in-time-assistance” (user message)

Give them a way to “back-out”




                                   #uxmaptouchapp #esriuc #mapux #gisux
Remember the “Javascript Dev Starter App”?




                             #uxmaptouchapp #esriuc #mapux #gisux
Grand Finale




http://edn1.esri.com/starterapp/



                          #uxmaptouchapp #esriuc #mapux #gisux
In the end…


               Design for touch

              Design for devices

              Design for the user!



               There are challenges!



                                 #uxmaptouchapp #esriuc #mapux #gisux
Questions?

Allan Laframboise        Frank Garofalo
.NET Technical Lead,     UI / Human Factors Engineer,
Esri Developer Network   Esri Professional Services

@Al_Laframboise          @fgarofalo




                           #uxmaptouchapp #esriuc #mapux #gisux
Questions?

Allan Laframboise                Frank Garofalo
.NET Technical Lead,             UI / Human Factors Engineer,
Esri Developer Network           Esri Professional Services

@Al_Laframboise                  @fgarofalo



         http://edn1.esri.com/starterapp/



                                   #uxmaptouchapp #esriuc #mapux #gisux
Today’s feature presentation…


 Apps need to run everywhere

 UX considerations

 Dev solutions




                           #uxmaptouchapp #esriuc #mapux #gisux
Things to think about




               #uxmaptouchapp #esriuc #mapux #gisux

Contenu connexe

Tendances

Future of advertising: Agency as a platform
Future of advertising: Agency as a platformFuture of advertising: Agency as a platform
Future of advertising: Agency as a platformAjinkya Pawar
 
俺が考えた最強のID連携デザインパターン
俺が考えた最強のID連携デザインパターン俺が考えた最強のID連携デザインパターン
俺が考えた最強のID連携デザインパターンMasaru Kurahayashi
 
Brand Planning for Clients
Brand Planning for ClientsBrand Planning for Clients
Brand Planning for ClientsGriffin Farley
 
50 Essential Content Marketing Hacks (Content Marketing World)
50 Essential Content Marketing Hacks (Content Marketing World)50 Essential Content Marketing Hacks (Content Marketing World)
50 Essential Content Marketing Hacks (Content Marketing World)Heinz Marketing Inc
 
UXデザイン・UXリサーチってだいぶ広まったよね?
UXデザイン・UXリサーチってだいぶ広まったよね?UXデザイン・UXリサーチってだいぶ広まったよね?
UXデザイン・UXリサーチってだいぶ広まったよね?Yoshiki Hayama
 
Search Content vs. Social Content
Search Content vs. Social ContentSearch Content vs. Social Content
Search Content vs. Social ContentSemrush
 
How to measure Digital
How to measure DigitalHow to measure Digital
How to measure DigitalJulian Cole
 
Zag brand strategy
Zag   brand strategyZag   brand strategy
Zag brand strategyjohnecooper
 
Brand activation - Do something awesome with people (English version)
Brand activation - Do something awesome with people (English version)Brand activation - Do something awesome with people (English version)
Brand activation - Do something awesome with people (English version)Pointvoucher
 
Design, Promote, Repeat: How Long-Term Marketing Strategies Lead to Success
Design, Promote, Repeat: How Long-Term Marketing Strategies Lead to SuccessDesign, Promote, Repeat: How Long-Term Marketing Strategies Lead to Success
Design, Promote, Repeat: How Long-Term Marketing Strategies Lead to SuccessShortStack
 
Day 1 - Advice for new planners from old planner
Day 1 - Advice for new planners from old plannerDay 1 - Advice for new planners from old planner
Day 1 - Advice for new planners from old plannerJulian Cole
 
UXとデザインまとめ by 上野学 - presentation from UX まとめ 2015
UXとデザインまとめ by 上野学 - presentation from UX まとめ 2015 UXとデザインまとめ by 上野学 - presentation from UX まとめ 2015
UXとデザインまとめ by 上野学 - presentation from UX まとめ 2015 Sociomedia
 
Persona Template Deutsch - Vorlage Erstellung Personas
Persona Template Deutsch - Vorlage Erstellung PersonasPersona Template Deutsch - Vorlage Erstellung Personas
Persona Template Deutsch - Vorlage Erstellung Personasnetspirits Online Marketing
 
情報処理技術者の倫理とWell being
情報処理技術者の倫理とWell being情報処理技術者の倫理とWell being
情報処理技術者の倫理とWell beingakimichi Yamada
 

Tendances (20)

Future of advertising: Agency as a platform
Future of advertising: Agency as a platformFuture of advertising: Agency as a platform
Future of advertising: Agency as a platform
 
俺が考えた最強のID連携デザインパターン
俺が考えた最強のID連携デザインパターン俺が考えた最強のID連携デザインパターン
俺が考えた最強のID連携デザインパターン
 
DIY UX Audit
DIY UX AuditDIY UX Audit
DIY UX Audit
 
Brand Planning for Clients
Brand Planning for ClientsBrand Planning for Clients
Brand Planning for Clients
 
50 Essential Content Marketing Hacks (Content Marketing World)
50 Essential Content Marketing Hacks (Content Marketing World)50 Essential Content Marketing Hacks (Content Marketing World)
50 Essential Content Marketing Hacks (Content Marketing World)
 
UXデザイン・UXリサーチってだいぶ広まったよね?
UXデザイン・UXリサーチってだいぶ広まったよね?UXデザイン・UXリサーチってだいぶ広まったよね?
UXデザイン・UXリサーチってだいぶ広まったよね?
 
Search Content vs. Social Content
Search Content vs. Social ContentSearch Content vs. Social Content
Search Content vs. Social Content
 
How to measure Digital
How to measure DigitalHow to measure Digital
How to measure Digital
 
Zag brand strategy
Zag   brand strategyZag   brand strategy
Zag brand strategy
 
Brand activation - Do something awesome with people (English version)
Brand activation - Do something awesome with people (English version)Brand activation - Do something awesome with people (English version)
Brand activation - Do something awesome with people (English version)
 
Design, Promote, Repeat: How Long-Term Marketing Strategies Lead to Success
Design, Promote, Repeat: How Long-Term Marketing Strategies Lead to SuccessDesign, Promote, Repeat: How Long-Term Marketing Strategies Lead to Success
Design, Promote, Repeat: How Long-Term Marketing Strategies Lead to Success
 
Day 1 - Advice for new planners from old planner
Day 1 - Advice for new planners from old plannerDay 1 - Advice for new planners from old planner
Day 1 - Advice for new planners from old planner
 
Brand
BrandBrand
Brand
 
Bbdo big idea_today
Bbdo big idea_todayBbdo big idea_today
Bbdo big idea_today
 
UXとデザインまとめ by 上野学 - presentation from UX まとめ 2015
UXとデザインまとめ by 上野学 - presentation from UX まとめ 2015 UXとデザインまとめ by 上野学 - presentation from UX まとめ 2015
UXとデザインまとめ by 上野学 - presentation from UX まとめ 2015
 
Persona Template Deutsch - Vorlage Erstellung Personas
Persona Template Deutsch - Vorlage Erstellung PersonasPersona Template Deutsch - Vorlage Erstellung Personas
Persona Template Deutsch - Vorlage Erstellung Personas
 
Product vision board
Product vision boardProduct vision board
Product vision board
 
情報処理技術者の倫理とWell being
情報処理技術者の倫理とWell being情報処理技術者の倫理とWell being
情報処理技術者の倫理とWell being
 
Brand Workshop Presentation
Brand Workshop PresentationBrand Workshop Presentation
Brand Workshop Presentation
 
Zag
ZagZag
Zag
 

En vedette

Usability Testing: Understanding End-Users through Observation
Usability Testing: Understanding End-Users through ObservationUsability Testing: Understanding End-Users through Observation
Usability Testing: Understanding End-Users through ObservationFrank Garofalo
 
It's a Mobile and Touch World
It's a Mobile and Touch WorldIt's a Mobile and Touch World
It's a Mobile and Touch WorldFrank Garofalo
 
Ideation 6-8-5 activity
Ideation 6-8-5 activityIdeation 6-8-5 activity
Ideation 6-8-5 activityFrank Garofalo
 
UX: More than a Buzz Word
UX: More than a Buzz WordUX: More than a Buzz Word
UX: More than a Buzz WordFrank Garofalo
 
Users' Story: UX Storyboarding
Users' Story: UX StoryboardingUsers' Story: UX Storyboarding
Users' Story: UX StoryboardingFrank Garofalo
 
UX Design for Developers
UX Design for DevelopersUX Design for Developers
UX Design for DevelopersFrank Garofalo
 
Ideation6 8-5 activity
Ideation6 8-5 activityIdeation6 8-5 activity
Ideation6 8-5 activityFrank Garofalo
 
DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 2 of 2)
DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 2 of 2)DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 2 of 2)
DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 2 of 2)Frank Garofalo
 
"It's a Mobile & Touch World" Lightning Talk
"It's a Mobile & Touch World" Lightning Talk"It's a Mobile & Touch World" Lightning Talk
"It's a Mobile & Touch World" Lightning TalkFrank Garofalo
 
Pitch & Critique - Feedback
Pitch & Critique - FeedbackPitch & Critique - Feedback
Pitch & Critique - FeedbackFrank Garofalo
 
Storyboarding for the User Experience: It's like building a house
Storyboarding for the User Experience: It's like building a houseStoryboarding for the User Experience: It's like building a house
Storyboarding for the User Experience: It's like building a houseFrank Garofalo
 
The Power of Layering Multiple Interactive Data Sets
The Power of Layering Multiple Interactive Data SetsThe Power of Layering Multiple Interactive Data Sets
The Power of Layering Multiple Interactive Data SetsFrank Garofalo
 
How to "Do" Lean UX in 5 Easy Steps
How to "Do" Lean UX in 5 Easy StepsHow to "Do" Lean UX in 5 Easy Steps
How to "Do" Lean UX in 5 Easy StepsJeff Gothelf
 
Lean UX: Getting out of the deliverables business
Lean UX: Getting out of the deliverables businessLean UX: Getting out of the deliverables business
Lean UX: Getting out of the deliverables businessJeff Gothelf
 
DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 1 of 2)
DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 1 of 2)DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 1 of 2)
DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 1 of 2)Frank Garofalo
 
MOBILE INTERACTION PATTERNS AND NON PATTERNS
MOBILE INTERACTION PATTERNS AND NON PATTERNSMOBILE INTERACTION PATTERNS AND NON PATTERNS
MOBILE INTERACTION PATTERNS AND NON PATTERNSShyamala Prayaga
 
Game Design Thinking for the Enterprise
Game Design Thinking for the EnterpriseGame Design Thinking for the Enterprise
Game Design Thinking for the EnterpriseAnn DeMarle
 

En vedette (20)

Usability Testing: Understanding End-Users through Observation
Usability Testing: Understanding End-Users through ObservationUsability Testing: Understanding End-Users through Observation
Usability Testing: Understanding End-Users through Observation
 
It's a Mobile and Touch World
It's a Mobile and Touch WorldIt's a Mobile and Touch World
It's a Mobile and Touch World
 
Ideation 6-8-5 activity
Ideation 6-8-5 activityIdeation 6-8-5 activity
Ideation 6-8-5 activity
 
UX: More than a Buzz Word
UX: More than a Buzz WordUX: More than a Buzz Word
UX: More than a Buzz Word
 
Users' Story: UX Storyboarding
Users' Story: UX StoryboardingUsers' Story: UX Storyboarding
Users' Story: UX Storyboarding
 
UX Design for Developers
UX Design for DevelopersUX Design for Developers
UX Design for Developers
 
Ideation6 8-5 activity
Ideation6 8-5 activityIdeation6 8-5 activity
Ideation6 8-5 activity
 
DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 2 of 2)
DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 2 of 2)DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 2 of 2)
DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 2 of 2)
 
"It's a Mobile & Touch World" Lightning Talk
"It's a Mobile & Touch World" Lightning Talk"It's a Mobile & Touch World" Lightning Talk
"It's a Mobile & Touch World" Lightning Talk
 
Pitch & Critique - Feedback
Pitch & Critique - FeedbackPitch & Critique - Feedback
Pitch & Critique - Feedback
 
Storyboarding for the User Experience: It's like building a house
Storyboarding for the User Experience: It's like building a houseStoryboarding for the User Experience: It's like building a house
Storyboarding for the User Experience: It's like building a house
 
UX Strategy OneSheet
UX Strategy OneSheetUX Strategy OneSheet
UX Strategy OneSheet
 
Storyboarding levels
Storyboarding levelsStoryboarding levels
Storyboarding levels
 
The Power of Layering Multiple Interactive Data Sets
The Power of Layering Multiple Interactive Data SetsThe Power of Layering Multiple Interactive Data Sets
The Power of Layering Multiple Interactive Data Sets
 
How to "Do" Lean UX in 5 Easy Steps
How to "Do" Lean UX in 5 Easy StepsHow to "Do" Lean UX in 5 Easy Steps
How to "Do" Lean UX in 5 Easy Steps
 
Lean UX: Getting out of the deliverables business
Lean UX: Getting out of the deliverables businessLean UX: Getting out of the deliverables business
Lean UX: Getting out of the deliverables business
 
DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 1 of 2)
DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 1 of 2)DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 1 of 2)
DevSummit 2016 PreSummit Workshop: Getting to Know Your Users (Part 1 of 2)
 
MOBILE INTERACTION PATTERNS AND NON PATTERNS
MOBILE INTERACTION PATTERNS AND NON PATTERNSMOBILE INTERACTION PATTERNS AND NON PATTERNS
MOBILE INTERACTION PATTERNS AND NON PATTERNS
 
Game Design Thinking for the Enterprise
Game Design Thinking for the EnterpriseGame Design Thinking for the Enterprise
Game Design Thinking for the Enterprise
 
Always-on research
Always-on researchAlways-on research
Always-on research
 

Similaire à Touch-friendly design tips for mapping apps

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...GIS in the Rockies
 
Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....
Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....
Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....Patrick Lauke
 
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.agup2009
 
WebGL, HTML5 and How the Mobile Web Was Won
WebGL, HTML5 and How the Mobile Web Was WonWebGL, HTML5 and How the Mobile Web Was Won
WebGL, HTML5 and How the Mobile Web Was WonTony Parisi
 
KODE JS POKENNNNN
KODE JS POKENNNNNKODE JS POKENNNNN
KODE JS POKENNNNNPipo Atem
 
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
 
Mobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptMobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptfranksvalli
 
EP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
EP2016 - Moving Away From Nodejs To A Pure Python Solution For AssetsEP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
EP2016 - Moving Away From Nodejs To A Pure Python Solution For AssetsAlessandro Molina
 
Building responsive web mobile mapping applications
Building responsive web mobile mapping applicationsBuilding responsive web mobile mapping applications
Building responsive web mobile mapping applicationsAllan Laframboise
 
Developing AIR for Android with Flash Professional
Developing AIR for Android with Flash ProfessionalDeveloping AIR for Android with Flash Professional
Developing AIR for Android with Flash ProfessionalChris Griffith
 
HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?Ankara JUG
 
Leaving Flatland: getting started with WebGL
Leaving Flatland: getting started with WebGLLeaving Flatland: getting started with WebGL
Leaving Flatland: getting started with WebGLgerbille
 

Similaire à Touch-friendly design tips for mapping apps (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...
 
@Ionic native/google-maps
@Ionic native/google-maps@Ionic native/google-maps
@Ionic native/google-maps
 
Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....
Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....
Handys und Tablets - Webentwicklung jenseits des Desktops - WebTech Mainz 12....
 
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.
 
WebGL, HTML5 and How the Mobile Web Was Won
WebGL, HTML5 and How the Mobile Web Was WonWebGL, HTML5 and How the Mobile Web Was Won
WebGL, HTML5 and How the Mobile Web Was Won
 
Gup web mobilegis
Gup web mobilegisGup web mobilegis
Gup web mobilegis
 
Android 3
Android 3Android 3
Android 3
 
KODE JS POKENNNNN
KODE JS POKENNNNNKODE JS POKENNNNN
KODE JS POKENNNNN
 
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...
 
Mobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScriptMobile HTML, CSS, and JavaScript
Mobile HTML, CSS, and JavaScript
 
Location Based Services Without the Cocoa
Location Based Services Without the CocoaLocation Based Services Without the Cocoa
Location Based Services Without the Cocoa
 
JQuery Flot
JQuery FlotJQuery Flot
JQuery Flot
 
mobl
moblmobl
mobl
 
A More Flash Like Web?
A More Flash Like Web?A More Flash Like Web?
A More Flash Like Web?
 
EP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
EP2016 - Moving Away From Nodejs To A Pure Python Solution For AssetsEP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
EP2016 - Moving Away From Nodejs To A Pure Python Solution For Assets
 
Building responsive web mobile mapping applications
Building responsive web mobile mapping applicationsBuilding responsive web mobile mapping applications
Building responsive web mobile mapping applications
 
Developing AIR for Android with Flash Professional
Developing AIR for Android with Flash ProfessionalDeveloping AIR for Android with Flash Professional
Developing AIR for Android with Flash Professional
 
HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?HTML5 - Daha Flash bir web?
HTML5 - Daha Flash bir web?
 
Leaving Flatland: getting started with WebGL
Leaving Flatland: getting started with WebGLLeaving Flatland: getting started with WebGL
Leaving Flatland: getting started with WebGL
 
Measuring Continuity
Measuring ContinuityMeasuring Continuity
Measuring Continuity
 

Plus de Frank Garofalo

Resident Engagement Focus to Increasing Productivity and Efficiency - ACUHO-I...
Resident Engagement Focus to Increasing Productivity and Efficiency - ACUHO-I...Resident Engagement Focus to Increasing Productivity and Efficiency - ACUHO-I...
Resident Engagement Focus to Increasing Productivity and Efficiency - ACUHO-I...Frank Garofalo
 
Toolkit Workshop: Learn Methods and Techniques for Understanding your Target ...
Toolkit Workshop: Learn Methods and Techniques for Understanding your Target ...Toolkit Workshop: Learn Methods and Techniques for Understanding your Target ...
Toolkit Workshop: Learn Methods and Techniques for Understanding your Target ...Frank Garofalo
 
San Diego Startup Week 2019 Idea Track Lightning Talk Wed May 29
San Diego Startup Week 2019 Idea Track Lightning Talk Wed May 29San Diego Startup Week 2019 Idea Track Lightning Talk Wed May 29
San Diego Startup Week 2019 Idea Track Lightning Talk Wed May 29Frank Garofalo
 
Pitch and Critique Method
Pitch and Critique MethodPitch and Critique Method
Pitch and Critique MethodFrank Garofalo
 
Idea Generation and Evaluation Workshop
Idea Generation and Evaluation WorkshopIdea Generation and Evaluation Workshop
Idea Generation and Evaluation WorkshopFrank Garofalo
 
Garofalo UX - Portfolio 2018
Garofalo UX - Portfolio 2018Garofalo UX - Portfolio 2018
Garofalo UX - Portfolio 2018Frank Garofalo
 
Startup San Diego - Volunteer Onboarding 2018 (v2)
Startup San Diego - Volunteer Onboarding 2018 (v2)Startup San Diego - Volunteer Onboarding 2018 (v2)
Startup San Diego - Volunteer Onboarding 2018 (v2)Frank Garofalo
 
The Business of UX - Being a Designer Is Not Enough
The Business of UX - Being a Designer Is Not EnoughThe Business of UX - Being a Designer Is Not Enough
The Business of UX - Being a Designer Is Not EnoughFrank Garofalo
 
Ideas, Human Experience, & ROI
Ideas, Human Experience, & ROIIdeas, Human Experience, & ROI
Ideas, Human Experience, & ROIFrank Garofalo
 
Esri User Conference 2016 - UX & UI activities
Esri User Conference 2016 - UX & UI activitiesEsri User Conference 2016 - UX & UI activities
Esri User Conference 2016 - UX & UI activitiesFrank Garofalo
 
User Experience (UX) & User Interface (UI) Exchange 2016
User Experience (UX) & User Interface (UI) Exchange 2016User Experience (UX) & User Interface (UI) Exchange 2016
User Experience (UX) & User Interface (UI) Exchange 2016Frank Garofalo
 
Esri DevSummit 2016 - Journey Canvas:
Esri DevSummit 2016 - Journey Canvas: Esri DevSummit 2016 - Journey Canvas:
Esri DevSummit 2016 - Journey Canvas: Frank Garofalo
 
Purdue GIS Day 2015 Keynote - It's All About the Journey
Purdue GIS Day 2015 Keynote - It's All About the JourneyPurdue GIS Day 2015 Keynote - It's All About the Journey
Purdue GIS Day 2015 Keynote - It's All About the JourneyFrank Garofalo
 
Purdue GIS Day 2015 - Ideation Workshop
Purdue GIS Day 2015 - Ideation WorkshopPurdue GIS Day 2015 - Ideation Workshop
Purdue GIS Day 2015 - Ideation WorkshopFrank Garofalo
 
The Art of User Experience: Methodologies Around Designing Great Apps
The Art of User Experience: Methodologies Around Designing Great AppsThe Art of User Experience: Methodologies Around Designing Great Apps
The Art of User Experience: Methodologies Around Designing Great AppsFrank Garofalo
 
Brainstorming in an Agile World, present- Esri UC 2015
Brainstorming in an Agile World, present- Esri UC 2015Brainstorming in an Agile World, present- Esri UC 2015
Brainstorming in an Agile World, present- Esri UC 2015Frank Garofalo
 
Brainstorming in an Agile World (Esri DevSummit 2015)
Brainstorming in an Agile World (Esri DevSummit 2015)Brainstorming in an Agile World (Esri DevSummit 2015)
Brainstorming in an Agile World (Esri DevSummit 2015)Frank Garofalo
 

Plus de Frank Garofalo (20)

Resident Engagement Focus to Increasing Productivity and Efficiency - ACUHO-I...
Resident Engagement Focus to Increasing Productivity and Efficiency - ACUHO-I...Resident Engagement Focus to Increasing Productivity and Efficiency - ACUHO-I...
Resident Engagement Focus to Increasing Productivity and Efficiency - ACUHO-I...
 
Toolkit Workshop: Learn Methods and Techniques for Understanding your Target ...
Toolkit Workshop: Learn Methods and Techniques for Understanding your Target ...Toolkit Workshop: Learn Methods and Techniques for Understanding your Target ...
Toolkit Workshop: Learn Methods and Techniques for Understanding your Target ...
 
San Diego Startup Week 2019 Idea Track Lightning Talk Wed May 29
San Diego Startup Week 2019 Idea Track Lightning Talk Wed May 29San Diego Startup Week 2019 Idea Track Lightning Talk Wed May 29
San Diego Startup Week 2019 Idea Track Lightning Talk Wed May 29
 
Garofalo UX: Training
Garofalo UX: TrainingGarofalo UX: Training
Garofalo UX: Training
 
Pitch and Critique Method
Pitch and Critique MethodPitch and Critique Method
Pitch and Critique Method
 
Idea Generation and Evaluation Workshop
Idea Generation and Evaluation WorkshopIdea Generation and Evaluation Workshop
Idea Generation and Evaluation Workshop
 
Garofalo UX - Portfolio 2018
Garofalo UX - Portfolio 2018Garofalo UX - Portfolio 2018
Garofalo UX - Portfolio 2018
 
Startup San Diego - Volunteer Onboarding 2018 (v2)
Startup San Diego - Volunteer Onboarding 2018 (v2)Startup San Diego - Volunteer Onboarding 2018 (v2)
Startup San Diego - Volunteer Onboarding 2018 (v2)
 
The Business of UX - Being a Designer Is Not Enough
The Business of UX - Being a Designer Is Not EnoughThe Business of UX - Being a Designer Is Not Enough
The Business of UX - Being a Designer Is Not Enough
 
Ideas, Human Experience, & ROI
Ideas, Human Experience, & ROIIdeas, Human Experience, & ROI
Ideas, Human Experience, & ROI
 
ROI + Brainstorming
ROI + BrainstormingROI + Brainstorming
ROI + Brainstorming
 
Esri User Conference 2016 - UX & UI activities
Esri User Conference 2016 - UX & UI activitiesEsri User Conference 2016 - UX & UI activities
Esri User Conference 2016 - UX & UI activities
 
User Experience (UX) & User Interface (UI) Exchange 2016
User Experience (UX) & User Interface (UI) Exchange 2016User Experience (UX) & User Interface (UI) Exchange 2016
User Experience (UX) & User Interface (UI) Exchange 2016
 
Esri DevSummit 2016 - Journey Canvas:
Esri DevSummit 2016 - Journey Canvas: Esri DevSummit 2016 - Journey Canvas:
Esri DevSummit 2016 - Journey Canvas:
 
Purdue GIS Day 2015 Keynote - It's All About the Journey
Purdue GIS Day 2015 Keynote - It's All About the JourneyPurdue GIS Day 2015 Keynote - It's All About the Journey
Purdue GIS Day 2015 Keynote - It's All About the Journey
 
Purdue GIS Day 2015 - Ideation Workshop
Purdue GIS Day 2015 - Ideation WorkshopPurdue GIS Day 2015 - Ideation Workshop
Purdue GIS Day 2015 - Ideation Workshop
 
The Art of User Experience: Methodologies Around Designing Great Apps
The Art of User Experience: Methodologies Around Designing Great AppsThe Art of User Experience: Methodologies Around Designing Great Apps
The Art of User Experience: Methodologies Around Designing Great Apps
 
Brainstorming in an Agile World, present- Esri UC 2015
Brainstorming in an Agile World, present- Esri UC 2015Brainstorming in an Agile World, present- Esri UC 2015
Brainstorming in an Agile World, present- Esri UC 2015
 
UX & UI Exchange 2015
UX & UI Exchange 2015UX & UI Exchange 2015
UX & UI Exchange 2015
 
Brainstorming in an Agile World (Esri DevSummit 2015)
Brainstorming in an Agile World (Esri DevSummit 2015)Brainstorming in an Agile World (Esri DevSummit 2015)
Brainstorming in an Agile World (Esri DevSummit 2015)
 

Dernier

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreternaman860154
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEarley Information Science
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxKatpro Technologies
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessPixlogix Infotech
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking MenDelhi Call girls
 

Dernier (20)

Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptxFactors to Consider When Choosing Accounts Payable Services Providers.pptx
Factors to Consider When Choosing Accounts Payable Services Providers.pptx
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
08448380779 Call Girls In Diplomatic Enclave Women Seeking Men
 

Touch-friendly design tips for mapping apps

  • 1. UX Considerations for Mapping Apps on Touch Devices “Touch-friendly mapping apps” Allan Laframboise Frank Garofalo #uxmaptouchapp #esriuc #mapux #gisux
  • 2. So you’ve got a web mapping app… #uxmaptouchapp #esriuc #mapux #gisux
  • 3. So you’ve got a web mapping app… …is it usable on a touch device? #uxmaptouchapp #esriuc #mapux #gisux
  • 5.
  • 6. Why? #uxmaptouchapp #esriuc #mapux #gisux
  • 7. Time Design Cost Knowledge Standards Technical Limitations #uxmaptouchapp #esriuc #mapux #gisux
  • 8. it’s a jungle out there! #uxmaptouchapp #esriuc #mapux #gisux
  • 9. it’s a jungle out there! Touch #uxmaptouchapp #esriuc #mapux #gisux
  • 10. touch = mouseless #uxmaptouchapp #esriuc #mapux #gisux
  • 11. Device challenges Viewports Interaction Processors/speed Connectivity #uxmaptouchapp #esriuc #mapux #gisux
  • 12. Viewports - Resolution/Orientation 1024, 768,480,320 Rotation, orientation UX • Handling physical device • Large screen size = small buttons (OK!) • Small screen size = big buttons (challenge!) • Glare, fingerprints… #uxmaptouchapp #esriuc #mapux #gisux
  • 13. Interaction - Keyboard vs mouse vs touch • Physical differences… / Input • Form factor • UX • Click vs tap vs voice • Mouse cursor vs direct interaction (finger) • Keyboard shortcuts vs gestures • Right-click, mouse over (don’t exist) #uxmaptouchapp #esriuc #mapux #gisux
  • 14. Processor Speed & Connectivity - Connected & Disconnected - Wifi vs mobile - UX - user feedback one when connection status - too slow due to connection speed - out of memory/memory limitations #uxmaptouchapp #esriuc #mapux #gisux
  • 15. Mapping dev challenges Mouse vs touch events Mouse vs touch vs mapping events Usability #uxmaptouchapp #esriuc #mapux #gisux
  • 16. So where do I start? #uxmaptouchapp #esriuc #mapux #gisux
  • 17. Think mobile first #uxmaptouchapp #esriuc #mapux #gisux
  • 18. Think relevance #uxmaptouchapp #esriuc #mapux #gisux
  • 19. Think simple #uxmaptouchapp #esriuc #mapux #gisux
  • 20. Think reusable (content) #uxmaptouchapp #esriuc #mapux #gisux
  • 21. Think “responsive” #uxmaptouchapp #esriuc #mapux #gisux
  • 22. Your app running everywhere… #uxmaptouchapp #esriuc #mapux #gisux
  • 23. Plan/design for each device What is most relevant? #uxmaptouchapp #esriuc #mapux #gisux
  • 24. Mock-up first (mobile, tablet & desktop) #uxmaptouchapp #esriuc #mapux #gisux
  • 25. Use case: Javascript Dev Starter App  Web app  Touch  Responsive  Good UX #uxmaptouchapp #esriuc #mapux #gisux
  • 26. Dev solutions, thinking responsive... Touch Fluid layout (960 grid) Media Queries – screen, print, handheld Smart css #uxmaptouchapp #esriuc #mapux #gisux
  • 27. Touch Minimum “press-able” area 36px x 36px Keep “press-able” elements away from edges No right-click & hover / mouse-over for touch Avoid the "double tap" Gestures should be used as shortcuts #uxmaptouchapp #esriuc #mapux #gisux
  • 28. Fluid Explained… Percentage based widths 960 grid system (www.960.gs) grid_16 grid_5 grid_11 grid_8 grid_8 #uxmaptouchapp #esriuc #mapux #gisux
  • 29. Media Query @media @media all and ( min-width : 768px ) and ( max-width : 1024px ) and ( orientation : portrait ) { … } /* Tablet - Portrait */ @media all and ( min-width: 768px ) and ( max-width : 1024px ) and (max-height : 768px) and ( orientation : landscape ) { … } /* Tablet - Landscape */ @media all and ( min-width: 321px ) and ( max-width: 480px ) { … } /* Smartphone - Landscape */ @media all and ( max-width: 320px ) { … } /* Smartphone - Portrait */ @media all and ( min-width: 800px ) and ( min-height: 800px ) and ( max-width: 1279px ) { … } /* Desktop */ @media all and ( min-width : 1280px ) { … } /* Desktop - Wide Screen */ Resource: http://css-tricks.com/snippets/css/media-queries-for-standard-devices/ #uxmaptouchapp #esriuc #mapux #gisux
  • 30. Smart CSS <body class = “ … ” > “ui_iOS ui_iOS_iPhone” “ui_Android ui_AndroidPhone” “ui_Win ui_Win7_Phone” Same HTML with different CSS applied #uxmaptouchapp #esriuc #mapux #gisux
  • 31. Mobile browser challenges… Tool bars take up space too! #uxmaptouchapp #esriuc #mapux #gisux
  • 32. Touch-friendly dev #uxmaptouchapp #esriuc #mapux #gisux
  • 33. ArcGIS Javascript Compact <script type="text/javascript" src="http://serverapi.arcgisonline.com/jsapi/arcgis/?v=3.0compact"> </script #uxmaptouchapp #esriuc #mapux #gisux
  • 34. Viewport and orientation <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/> … "autoResize": function ( window ) { var supportsOrientationChange = "onorientationchange" in window, orientationEvent = supportsOrientationChange ? "orientationchange" : "resize"; function orientationChanged( map ) { if (map) { map.resize(); map.reposition(); } } // Attach if ( window.addEventListener ) window.addEventListener( orientationEvent, function () { orientationChanged(map); }, false ); }, #uxmaptouchapp #esriuc #mapux #gisux
  • 35. Device detection var mobileDevice = { Android: function () { return navigator.userAgent.match(/Android/i) ? true : false; }, BlackBerry: function () { return navigator.userAgent.match(/BlackBerry/i) ? true : false; }, iPhone: function () { return navigator.userAgent.match(/iPhone|iPod/i) ? true : false; }, iPad: function () { return navigator.userAgent.match(/iPad/i) ? true : false; }, Windows: function () { return navigator.userAgent.match(/IEMobile/i) ? true : false; }, any: function () { return (isMobile.Android() || isMobile.BlackBerry() || isMobile.iPhone() || isMobile.iPad() || isMobile.Windows()); } #uxmaptouchapp #esriuc #mapux #gisux
  • 36. Events: onclick vs ontouchstart <button id="addPoint" class="buttonControls" onclick="setActiveTool(this);" ontouchstart ="setActiveTool(this);"><span class="buttonLabel">Add Point</span></button> <button id="addLine" class="buttonControls" onclick="setActiveTool(this);" ontouchstart ="setActiveTool(this);"><span class="buttonLabel">Add Point</span></button> <button id="addPolygon" class="buttonControls" onclick="setActiveTool(this);" ontouchstart ="setActiveTool(this);"><span class="buttonLabel">Add Point</span></button> <button id="clearGraphics" class="buttonControls" onclick="setActiveTool(this);" ontouchstart ="setActiveTool(null);"><span class="buttonLabel">Add Point</span></button> onmousedown + onclick = ontouchstart ontouchstart != onmousedown || onclick #uxmaptouchapp #esriuc #mapux #gisux
  • 37. Events: No onmouseover (hover) <div id="containerMenu" class=""> <div id="basemaps" class="buttonNav selected" onmouseover="setActiveModule( this, true );" ontouchstart="setActiveModule( this, true );"><p>Basemaps</p></div> <div id="geolocation" class="buttonNav" onmouseover="setActiveModule( this, true );" ontouchstart ="setActiveModule( this, true );"><p>Geolocation</p></div> <div id="graphics" class="buttonNav" onmouseover="setActiveModule( this, true );" ontouchstart ="setActiveModule( this, false );"><p>Add Graphics</p></div> <div id="findAddress" class="buttonNav" onmouseover="setActiveModule( this, true );" ontouchstart ="setActiveModule( this, true );"><p>Find Place</p></div> … </div> #uxmaptouchapp #esriuc #mapux #gisux
  • 38. Events: No doubleclick function addGraphicCallback( evt ) { var pt = evt.mapPoint; clearAddGraphics( false ); var finished = ( evt.type == "dblclick" || evt.type == "touchend“ ); switch ( activeToolId ) { case 'addPoint': addPoint( pt, finished ); break; case 'addLine': addLine( pt, finished ); break; case 'addPolygon': addPolygon( pt, finished ); break; default: } } #uxmaptouchapp #esriuc #mapux #gisux
  • 39. Locking map navigation function setActiveTool ( ctrl, active) { lockMapNavigation( active ); … } function lockMapNavigation( lock ) { if ( lock ) { map.disableDoubleClickZoom(); map.disableClickRecenter(); map.disablePan(); } else { map.enableDoubleClickZoom(); map.enableClickRecenter(); map.enablePan(); } } #uxmaptouchapp #esriuc #mapux #gisux
  • 40. Final UX thoughts Toggle - turn tools on and off (expected) Guide your user - “just-in-time-assistance” (user message) Give them a way to “back-out” #uxmaptouchapp #esriuc #mapux #gisux
  • 41. Remember the “Javascript Dev Starter App”? #uxmaptouchapp #esriuc #mapux #gisux
  • 42. Grand Finale http://edn1.esri.com/starterapp/ #uxmaptouchapp #esriuc #mapux #gisux
  • 43. In the end… Design for touch Design for devices Design for the user! There are challenges! #uxmaptouchapp #esriuc #mapux #gisux
  • 44. Questions? Allan Laframboise Frank Garofalo .NET Technical Lead, UI / Human Factors Engineer, Esri Developer Network Esri Professional Services @Al_Laframboise @fgarofalo #uxmaptouchapp #esriuc #mapux #gisux
  • 45. Questions? Allan Laframboise Frank Garofalo .NET Technical Lead, UI / Human Factors Engineer, Esri Developer Network Esri Professional Services @Al_Laframboise @fgarofalo http://edn1.esri.com/starterapp/ #uxmaptouchapp #esriuc #mapux #gisux
  • 46.
  • 47. Today’s feature presentation… Apps need to run everywhere UX considerations Dev solutions #uxmaptouchapp #esriuc #mapux #gisux
  • 48. Things to think about #uxmaptouchapp #esriuc #mapux #gisux