SlideShare a Scribd company logo
1 of 61
Download to read offline
Building a Mobile, Cloud,
Check-in App in 75 Minutes
                 -
           Zero to Hero


 alaframboise@esri.com | @AL_Laframboise
    dmartinez@esri.com | @ DMDevDude

          Esri Developer Network
Dev Meet Ups




 www.esri.com/devmeetups
Esri = “ezri”
GIS




Geospatial platform… solve location-based problems.
Modeling with layers…




            Geospatial Sandwich
Basics
Point    Line      Polygon




place    street    parcel




        Features
The “arc”


Start

                 Direction




                              End




        Intelligent Feature
“Arc”GIS


         Web
                  Create
                               Cloud
                   Store
                 Manage
                 Analyze
Mobile           Visualize
                             Enterprise
                  Share



   Desktop
GIS apps
      are
   Location-based apps




                   GIS

               Location-based
                  Systems
Location Intelligence




                                           Quake Map


E311/Service Request




                          Campus Routing

                                                       Sky Harbor Airport
Social Intelligence
Geolocation
Power of Social
GIS architecture - 101

                                       Mobile
                                        Web



           Flex
                                                Social Media


                  ArcGIS Online

Basemaps




  Geo Services
                   ArcGIS Server
                                                GPS


                             Geodatabase
So you want to build an app…
The idea




           +
Pizza Finder!
Maps

        Apps

Value
User Requirements

        Find pizza restaurants
        Within a certain “tolerance”
        Around me, address or touch map
        Route
        Check-in
the mock-up
System Requirements


           Multiple devices
           No hardware
           Single service provider
Business Requirements
Got a cloud-based,
       geospatial solution?




              Bueller?
ArcGIS Online Platform
www.arcgis.com
ArcGIS Online Subscription - your personal cloud.
POI



      Check In




Upload to the cloud
Forgot to demo?
ArcGIS APIs
Choosing your weapon
Mobile and Web


Apple iOS




Microsoft Windows
Phone 7




Google Android


                       Native or Web?
ArcGIS for JavaScript
        ArcGIS for iOS
 ArcGIS for Windows Phone
     ArcGIS for Android
ArcGIS for Windows Silverlight
        ArcGIS for Flex



         resources.arcgis.com
ArcGIS Online Basemaps
      Visualizing your world
Base layer options…
Projections and Spatial References
Where in the world am I?
                               Mercator



    Geographic - WGS 1984




         -87.6,41.9


                            -9743828.3,5131825.1
Basemap Service
var basemapURL =
“http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer”;

dojo.require("esri.map");

map = new esri.Map("mapDiv", { wrapAround180: true, null });
map.SetSpatialReference({"wkid":102100});

var basemap = new
esri.layers.ArcGISTiledMapServiceLayer(basemapURL);

map.addLayer(basemap);
ArcGIS Online Services
      Solving problems
Where am I?
Input Coordinates
navigator.geolocation.getCurrentPosition(zoomToLocation, this.geolocationError);



function zoomToLocation(location) {
  var centerPoint = esri.geometry.geographicToWebMercator(
  new esri.geometry.Point(location.coords.longitude,
  location.coords.latitude));

    var symbol = new esri.symbol.PictureMarkerSymbol(
    {"url":”images/BluePin1LargeB.png“,”width":28,"height":28} );

    var graphic = new esri.Graphic(centerPoint, symbol);

    geolocationLayer.graphics.add(graphic);

    map.centerAndZoom(centerPoint, 16);
}
Geocode Service
var geocodeService = new
esri.tasks.Locator("http://tasks.arcgis.com/ArcGIS/rest/services/WorldLocator/GeocodeServer");

var address = { "SingleLine": address };
locator.outSpatialReference = map.spatialReference;
var params = {address: address, outFields: ["Loc_name"]}

geocodeService.addressToLocations(params, geoCodeResults);

Ext.each(candidates, function (candidate) {
           if (candidate.score > 80) {
                       var geom = candidate.location;
                       var graphic = new esri.Graphic(geom,
                       symbol, null);

                      geoCodeLayer.graphics.add(graphic);
           }
});
Drive time tolerance?
Geoprocessing Service
var geoProcessService = new esri.tasks.Geoprocessor(
"http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Network/ESRI_DriveTime_US/GPServer/C
reateDriveTimePolygons");

var driveTimes = “1 2 3”; // minutes
var featureSet = new esri.tasks.FeatureSet();
featureSet.features = features.push(geoCodeGraphic);
var params = {"Location":featureSet,"Times":driveTimes };

geoProcessService.execute(params, driveTimeResults, null);

function driveTimeResults(results,messages) {
           var features = results[0].value.features;
           for (var f = 0, fl = features.length; f < fl; f++) {
                        var feature = features[f];
                        if (f == 0) // minute 1
                              feature.setSymbol(polySymbolRed);
                        if (f ==1) // minute 2
                              …
                        driveTimeLayer.add(feature);
           } );
}
Find places of interest
Feature Service – “geo query”
var poiCloudFeatureService = new QueryTask
("http://services.arcgis.com/uCXeTVveQzP4IIcx/arcgis/rest/services/BIG_POI/FeatureServer/0");


var q = new esri.tasks.Query();
q.returnGeometry = true;
q.outFields = ["NAME", "ADDRESS", "PHONE", "DESCRIPTION"];
q.geometry = driveTimeGeometry;
q.spatialRelationship = esriSpatialRelIntersects
q.where = "Cuisine = 'pizza'";

poiCloudFeatureService.execute(q, addPizzaLocations, null);

function addPizzaLocations(features) {
           Ext.each(features , function(feature){
             graphic = new esri.Graphic(feature.geometry,
             symbol, null);
             pizzaLayer.add(graphic);
           });
}
Select a place
Graphics Query
var pizzaLayer= map.layers["pizzaLayer"]; // stay local



dojo.connect(pizzaLayer, "onClick", displayInfo);

function displayInfo(args) {
           var pizzaLocation = args.graphic;
            var newView = Ext.create('PF.view.PizzaLocation',
           {
                       fullscreen:true,
                       feature:pizzaLocation,
                       title:pizzaLocation.attributes['Name']
           });

           this.defaultMapView.push(newView);
}
Ok, take me there!
Route Service
var routeService = new esri.tasks.RouteTask
("http://tasks.arcgisonline.com/arcgis/rest/services/Network/USA/NAServer/Route");


var params = new esri.tasks.RouteParameters();
params.stops.features[0] = startLoc;
params.stops.features[1] = endLoc;
params.returnDirections = true;
params.directionsLengthUnits = esri.Units.MILES;

routeService.solve(params, function (solveResult) {
  var directions = solveResult.routeResults[0].directions;
  directionFeatures = directions.features;
  var routeGeom = directions.mergedGeometry;
  var startPt = routeGeom.getPoint(0,0);
  var lastPath = routeGeom.paths[routeGeom.paths.length - 1];
  var endPt = routeGeom.getPoint(routeGeom.paths.length – 1,
  lastPath.length - 1);
}

function addGraphics(startPt, endPt, lastPath)…
Are we there yet?
Geometry Service - geofencing
Var geomService = new esri.tasks.GeometryService(
"http://tasks.arcgisonline.com /ArcGIS/rest/services/Geometry/GeometryServer");

var bufParams = new esri.tasks.BufferParameters();
bufParams.distances = [ 25 ];
bufParams.geometries = [ toPt ];
bufParams.outSpatialReference = new
esri.SpatialReference({"wkid":102100});

geomService.buffer(bufParams,
function (geometries) {
           var geoFence = geometries[0];
           var symbol = self.checkinToleranceSymbol;
           var graphic = new esri.Graphic(geoFence, symbol);
           geoFenceGraphicLayer.add(graphic) });

…

isPoint InFence = geoFence.contains(currentLocation); // local
check-in
Feature Service – update the cloud
var checkInLayer = new FeatureLayer(
"http://services.arcgis.com/uCXeTVveQzP4IIcx/arcgis/rest/services/PizzaCheckins/FeatureServer/1");


// Invisible layers
var distance = getDistance(routeGraphic);
var duration = getDuration(checkInTime, checkOutTime);
var userRating = getUserRating(duration, distance);

routeGraphic.Attributes["POI_ID"] = poi.attribues[' POI_ID' ];
routeGraphic.Attributes["Name"] = poi.attributes[' NAME' ];
routeGraphic.Attributes["CheckIn"] = checkInTime;
routeGraphic.Attributes["CheckOut"] = checkOutTime;
routeGraphic.Attributes["Duration"] = duration;
routeGraphic.Attributes["Distance"] = distance;
routeGraphic.Attributes["Rating"] = userRating;

checkInLayer.applyEdits([routeGraphic], null, null);
edn1.esri.com/pizzafinder
Putting it all together

  Monetizing your cloud
Sharing your cloud

   Webmaps


                                  Gino’s


                                  sBarro

                ArcGIS Online
                                Tomato Head

  Cloud Space
Forgot again?
A closer look with GIS
                         Customers
                              Demographics
                                     Location
                           Spatial Patterns




Monetization
          Advertising
 Stronger Business
That’s your mobile, cloud, check-in solution
                   in 75 minutes!




         The “Ultimate” Geospatial Sandwich
Questions?

      http://edn1.esri.com/pizzafinder
  (via Chrome, iPhone, iPad and Android)



alaframboise@esri.com | @AL_Laframboise
   dmartinez@esri.com | @ DMDevDude

More Related Content

What's hot

Developing a Weather Forecasting Web-Service using ArcGIS API for JavaScript
Developing a Weather Forecasting Web-Service using ArcGIS API for JavaScriptDeveloping a Weather Forecasting Web-Service using ArcGIS API for JavaScript
Developing a Weather Forecasting Web-Service using ArcGIS API for JavaScriptAlexa Guertin
 
Developer’s Guide to the ArcGIS Portal API, Esri, Julie Powell, Antoon Uijtd...
Developer’s Guide to the ArcGIS Portal API, Esri, Julie Powell, Antoon Uijtd...Developer’s Guide to the ArcGIS Portal API, Esri, Julie Powell, Antoon Uijtd...
Developer’s Guide to the ArcGIS Portal API, Esri, Julie Powell, Antoon Uijtd...Esri Nederland
 
Working with ArcGIS Online
Working with ArcGIS OnlineWorking with ArcGIS Online
Working with ArcGIS OnlineEsri
 
Building Web Apps with the Esri-Leaflet Plugin - Dubai DevSummit 2013
Building Web Apps with the Esri-Leaflet Plugin - Dubai DevSummit 2013Building Web Apps with the Esri-Leaflet Plugin - Dubai DevSummit 2013
Building Web Apps with the Esri-Leaflet Plugin - Dubai DevSummit 2013Aaron Parecki
 
Price list arc gis license
Price list arc gis licensePrice list arc gis license
Price list arc gis licenseIbni Sabil
 
Deep Dive into the ArcGIS Geotrigger Service - Esri DevSummit Dubai 2013
Deep Dive into the ArcGIS Geotrigger Service - Esri DevSummit Dubai 2013Deep Dive into the ArcGIS Geotrigger Service - Esri DevSummit Dubai 2013
Deep Dive into the ArcGIS Geotrigger Service - Esri DevSummit Dubai 2013Aaron Parecki
 
Arc2Earth - ESRI NYC Dev Meetup
Arc2Earth - ESRI NYC Dev MeetupArc2Earth - ESRI NYC Dev Meetup
Arc2Earth - ESRI NYC Dev MeetupArc2Earth
 
Introduction to ArcGIS Developer Tools - Smart Development - Esri UK Annual C...
Introduction to ArcGIS Developer Tools - Smart Development - Esri UK Annual C...Introduction to ArcGIS Developer Tools - Smart Development - Esri UK Annual C...
Introduction to ArcGIS Developer Tools - Smart Development - Esri UK Annual C...Esri UK
 
Virtual Earth And ESRI
Virtual Earth And ESRIVirtual Earth And ESRI
Virtual Earth And ESRITim Warr
 
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. GISAndrew Zolnai
 
Esri Web Applications February11 2011
Esri Web Applications February11 2011Esri Web Applications February11 2011
Esri Web Applications February11 2011delmelle
 
Sweet - Esri UK
Sweet - Esri UKSweet - Esri UK
Sweet - Esri UKEsri UK
 
Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...
Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...
Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...Amazon Web Services
 
Building API in the cloud using Azure Functions
Building API in the cloud using Azure FunctionsBuilding API in the cloud using Azure Functions
Building API in the cloud using Azure FunctionsAleksandar Bozinovski
 
ArcGIS 10.1 for Server Functionality Matrix
ArcGIS 10.1 for Server Functionality MatrixArcGIS 10.1 for Server Functionality Matrix
ArcGIS 10.1 for Server Functionality MatrixEsri
 
ArcGIS Runtime For Android
ArcGIS Runtime For AndroidArcGIS Runtime For Android
ArcGIS Runtime For AndroidGabriel Moreira
 
Serverless Azure
Serverless AzureServerless Azure
Serverless AzureMark Allan
 

What's hot (20)

Developing a Weather Forecasting Web-Service using ArcGIS API for JavaScript
Developing a Weather Forecasting Web-Service using ArcGIS API for JavaScriptDeveloping a Weather Forecasting Web-Service using ArcGIS API for JavaScript
Developing a Weather Forecasting Web-Service using ArcGIS API for JavaScript
 
Developer’s Guide to the ArcGIS Portal API, Esri, Julie Powell, Antoon Uijtd...
Developer’s Guide to the ArcGIS Portal API, Esri, Julie Powell, Antoon Uijtd...Developer’s Guide to the ArcGIS Portal API, Esri, Julie Powell, Antoon Uijtd...
Developer’s Guide to the ArcGIS Portal API, Esri, Julie Powell, Antoon Uijtd...
 
Working with ArcGIS Online
Working with ArcGIS OnlineWorking with ArcGIS Online
Working with ArcGIS Online
 
ArcGIS Online Lunch and Learn
ArcGIS Online Lunch and LearnArcGIS Online Lunch and Learn
ArcGIS Online Lunch and Learn
 
Building Web Apps with the Esri-Leaflet Plugin - Dubai DevSummit 2013
Building Web Apps with the Esri-Leaflet Plugin - Dubai DevSummit 2013Building Web Apps with the Esri-Leaflet Plugin - Dubai DevSummit 2013
Building Web Apps with the Esri-Leaflet Plugin - Dubai DevSummit 2013
 
High Accuracy Data Collection with Esri's Collector App
High Accuracy Data Collection with Esri's Collector AppHigh Accuracy Data Collection with Esri's Collector App
High Accuracy Data Collection with Esri's Collector App
 
Price list arc gis license
Price list arc gis licensePrice list arc gis license
Price list arc gis license
 
Deep Dive into the ArcGIS Geotrigger Service - Esri DevSummit Dubai 2013
Deep Dive into the ArcGIS Geotrigger Service - Esri DevSummit Dubai 2013Deep Dive into the ArcGIS Geotrigger Service - Esri DevSummit Dubai 2013
Deep Dive into the ArcGIS Geotrigger Service - Esri DevSummit Dubai 2013
 
Arc2Earth - ESRI NYC Dev Meetup
Arc2Earth - ESRI NYC Dev MeetupArc2Earth - ESRI NYC Dev Meetup
Arc2Earth - ESRI NYC Dev Meetup
 
Introduction to ArcGIS Developer Tools - Smart Development - Esri UK Annual C...
Introduction to ArcGIS Developer Tools - Smart Development - Esri UK Annual C...Introduction to ArcGIS Developer Tools - Smart Development - Esri UK Annual C...
Introduction to ArcGIS Developer Tools - Smart Development - Esri UK Annual C...
 
Virtual Earth And ESRI
Virtual Earth And ESRIVirtual Earth And ESRI
Virtual Earth And ESRI
 
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
 
Esri Web Applications February11 2011
Esri Web Applications February11 2011Esri Web Applications February11 2011
Esri Web Applications February11 2011
 
Sweet - Esri UK
Sweet - Esri UKSweet - Esri UK
Sweet - Esri UK
 
Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...
Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...
Serverless Orchestration with AWS Step Functions - May 2017 AWS Online Tech T...
 
Building API in the cloud using Azure Functions
Building API in the cloud using Azure FunctionsBuilding API in the cloud using Azure Functions
Building API in the cloud using Azure Functions
 
ArcGIS 10.1 for Server Functionality Matrix
ArcGIS 10.1 for Server Functionality MatrixArcGIS 10.1 for Server Functionality Matrix
ArcGIS 10.1 for Server Functionality Matrix
 
ArcGIS Runtime For Android
ArcGIS Runtime For AndroidArcGIS Runtime For Android
ArcGIS Runtime For Android
 
Serverless Azure
Serverless AzureServerless Azure
Serverless Azure
 
Our works
Our worksOur works
Our works
 

Similar to Building a ArcGIS mobile, cloud, checkin app in 75 minutes - zero to hero

GeoAdmin API & Mobile API, 2012
GeoAdmin API & Mobile API, 2012GeoAdmin API & Mobile API, 2012
GeoAdmin API & Mobile API, 2012Moullet
 
Introduction to ArcGIS for Developers, Esri, Charles van der Put, Jim Barry
Introduction toArcGIS for Developers, Esri, Charles van der Put, Jim BarryIntroduction toArcGIS for Developers, Esri, Charles van der Put, Jim Barry
Introduction to ArcGIS for Developers, Esri, Charles van der Put, Jim BarryEsri Nederland
 
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece CoLab Athens
 
Building Mobile Cross-Platform Geospatial Apps, Nick Landry
Building Mobile Cross-Platform Geospatial Apps, Nick LandryBuilding Mobile Cross-Platform Geospatial Apps, Nick Landry
Building Mobile Cross-Platform Geospatial Apps, Nick LandryXamarin
 
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 EverestAllan Laframboise
 
0 supermapproductsintroduction
0 supermapproductsintroduction0 supermapproductsintroduction
0 supermapproductsintroductionGeoMedeelel
 
Web enabling your survey business ppt version
Web enabling your survey business ppt versionWeb enabling your survey business ppt version
Web enabling your survey business ppt versionrudy_stricklan
 
Adding where to your ruby apps
Adding where to your ruby appsAdding where to your ruby apps
Adding where to your ruby appsRoberto Pepato
 
Web gis implementation notes
Web gis implementation notesWeb gis implementation notes
Web gis implementation notespaoloverri
 
Google Developer Day 2010 Japan: Android や iPhone で活用する Maps API のモバイル端末向け新機能...
Google Developer Day 2010 Japan: Android や iPhone で活用する Maps API のモバイル端末向け新機能...Google Developer Day 2010 Japan: Android や iPhone で活用する Maps API のモバイル端末向け新機能...
Google Developer Day 2010 Japan: Android や iPhone で活用する Maps API のモバイル端末向け新機能...Google Developer Relations Team
 
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
 
Building disconnected applications with the Geocortex mobile application fram...
Building disconnected applications with the Geocortex mobile application fram...Building disconnected applications with the Geocortex mobile application fram...
Building disconnected applications with the Geocortex mobile application fram...Geodata AS
 
Imagery and beyond - BK 2016
Imagery and beyond - BK 2016Imagery and beyond - BK 2016
Imagery and beyond - BK 2016Geodata AS
 
ArcGIS JavaScript API (build a web layer-based map application with html5 and...
ArcGIS JavaScript API (build a web layer-based map application with html5 and...ArcGIS JavaScript API (build a web layer-based map application with html5 and...
ArcGIS JavaScript API (build a web layer-based map application with html5 and...Stefano Marchisio
 
Location based solutions maps & your location
Location based solutions   maps & your locationLocation based solutions   maps & your location
Location based solutions maps & your locationNAILBITER
 
ArcGIS - A Platform for Developers & Startups
ArcGIS - A Platform for Developers & StartupsArcGIS - A Platform for Developers & Startups
ArcGIS - A Platform for Developers & StartupsEsri Ireland
 
Super map gis 8c
Super map gis 8cSuper map gis 8c
Super map gis 8cDaniel PI
 

Similar to Building a ArcGIS mobile, cloud, checkin app in 75 minutes - zero to hero (20)

GeoAdmin API & Mobile API, 2012
GeoAdmin API & Mobile API, 2012GeoAdmin API & Mobile API, 2012
GeoAdmin API & Mobile API, 2012
 
Introduction to ArcGIS for Developers, Esri, Charles van der Put, Jim Barry
Introduction toArcGIS for Developers, Esri, Charles van der Put, Jim BarryIntroduction toArcGIS for Developers, Esri, Charles van der Put, Jim Barry
Introduction to ArcGIS for Developers, Esri, Charles van der Put, Jim Barry
 
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
Ioannis Doxaras on GIS and Gmaps at 1st GTUG meetup Greece
 
Building Mobile Cross-Platform Geospatial Apps, Nick Landry
Building Mobile Cross-Platform Geospatial Apps, Nick LandryBuilding Mobile Cross-Platform Geospatial Apps, Nick Landry
Building Mobile Cross-Platform Geospatial Apps, Nick Landry
 
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
 
Live on everest
Live on everestLive on everest
Live on everest
 
The 21st Century Harvard Map
The 21st Century Harvard MapThe 21st Century Harvard Map
The 21st Century Harvard Map
 
0 supermapproductsintroduction
0 supermapproductsintroduction0 supermapproductsintroduction
0 supermapproductsintroduction
 
Web enabling your survey business ppt version
Web enabling your survey business ppt versionWeb enabling your survey business ppt version
Web enabling your survey business ppt version
 
Adding where to your ruby apps
Adding where to your ruby appsAdding where to your ruby apps
Adding where to your ruby apps
 
Web gis implementation notes
Web gis implementation notesWeb gis implementation notes
Web gis implementation notes
 
Google Developer Day 2010 Japan: Android や iPhone で活用する Maps API のモバイル端末向け新機能...
Google Developer Day 2010 Japan: Android や iPhone で活用する Maps API のモバイル端末向け新機能...Google Developer Day 2010 Japan: Android や iPhone で活用する Maps API のモバイル端末向け新機能...
Google Developer Day 2010 Japan: Android や iPhone で活用する Maps API のモバイル端末向け新機能...
 
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.
 
Building disconnected applications with the Geocortex mobile application fram...
Building disconnected applications with the Geocortex mobile application fram...Building disconnected applications with the Geocortex mobile application fram...
Building disconnected applications with the Geocortex mobile application fram...
 
Imagery and beyond - BK 2016
Imagery and beyond - BK 2016Imagery and beyond - BK 2016
Imagery and beyond - BK 2016
 
ArcGIS JavaScript API (build a web layer-based map application with html5 and...
ArcGIS JavaScript API (build a web layer-based map application with html5 and...ArcGIS JavaScript API (build a web layer-based map application with html5 and...
ArcGIS JavaScript API (build a web layer-based map application with html5 and...
 
Location based solutions maps & your location
Location based solutions   maps & your locationLocation based solutions   maps & your location
Location based solutions maps & your location
 
ArcGIS - A Platform for Developers & Startups
ArcGIS - A Platform for Developers & StartupsArcGIS - A Platform for Developers & Startups
ArcGIS - A Platform for Developers & Startups
 
Day4_WebGIS
Day4_WebGISDay4_WebGIS
Day4_WebGIS
 
Super map gis 8c
Super map gis 8cSuper map gis 8c
Super map gis 8c
 

More from Allan Laframboise

Esri open source projects on GitHub
Esri open source projects on GitHubEsri open source projects on GitHub
Esri open source projects on GitHubAllan Laframboise
 
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 BikersAllan Laframboise
 
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 JavaScriptAllan Laframboise
 
UX Considerations for Touch Mapping Apps
UX Considerations for Touch Mapping AppsUX Considerations for Touch Mapping Apps
UX Considerations for Touch Mapping AppsAllan Laframboise
 
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 geolocationAllan Laframboise
 
Gis & Social Media Integration
Gis & Social Media IntegrationGis & Social Media Integration
Gis & Social Media IntegrationAllan Laframboise
 
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 ”...Allan Laframboise
 
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?Allan Laframboise
 

More from Allan Laframboise (9)

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
 
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?
 

Recently uploaded

Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
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
 
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, ...apidays
 
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
 
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 MilvusZilliz
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...apidays
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyKhushali Kathiriya
 
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 connectorsNanddeep Nachan
 
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 challengesrafiqahmad00786416
 
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 educationjfdjdjcjdnsjd
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWERMadyBayot
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAndrey Devyatkin
 
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.pptxRustici Software
 
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...apidays
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024The Digital Insurer
 
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...apidays
 
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...Miguel Araújo
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 

Recently uploaded (20)

Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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
 
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, ...
 
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?
 
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
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
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
 
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
 
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
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
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
 
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...
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
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...
 
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...
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 

Building a ArcGIS mobile, cloud, checkin app in 75 minutes - zero to hero

  • 1. Building a Mobile, Cloud, Check-in App in 75 Minutes - Zero to Hero alaframboise@esri.com | @AL_Laframboise dmartinez@esri.com | @ DMDevDude Esri Developer Network
  • 2. Dev Meet Ups www.esri.com/devmeetups
  • 4. GIS Geospatial platform… solve location-based problems.
  • 5. Modeling with layers… Geospatial Sandwich
  • 6. Basics Point Line Polygon place street parcel Features
  • 7. The “arc” Start Direction End Intelligent Feature
  • 8. “Arc”GIS Web Create Cloud Store Manage Analyze Mobile Visualize Enterprise Share Desktop
  • 9. GIS apps are Location-based apps GIS Location-based Systems
  • 10. Location Intelligence Quake Map E311/Service Request Campus Routing Sky Harbor Airport
  • 14. GIS architecture - 101 Mobile Web Flex Social Media ArcGIS Online Basemaps Geo Services ArcGIS Server GPS Geodatabase
  • 15. So you want to build an app…
  • 16. The idea +
  • 18. Maps Apps Value
  • 19. User Requirements  Find pizza restaurants  Within a certain “tolerance”  Around me, address or touch map  Route  Check-in
  • 21. System Requirements  Multiple devices  No hardware  Single service provider
  • 23. Got a cloud-based, geospatial solution? Bueller?
  • 26. ArcGIS Online Subscription - your personal cloud.
  • 27. POI Check In Upload to the cloud
  • 30. Mobile and Web Apple iOS Microsoft Windows Phone 7 Google Android Native or Web?
  • 31. ArcGIS for JavaScript ArcGIS for iOS ArcGIS for Windows Phone ArcGIS for Android ArcGIS for Windows Silverlight ArcGIS for Flex resources.arcgis.com
  • 32. ArcGIS Online Basemaps Visualizing your world
  • 35. Where in the world am I? Mercator Geographic - WGS 1984 -87.6,41.9 -9743828.3,5131825.1
  • 36. Basemap Service var basemapURL = “http://server.arcgisonline.com/ArcGIS/rest/services/World_Street_Map/MapServer”; dojo.require("esri.map"); map = new esri.Map("mapDiv", { wrapAround180: true, null }); map.SetSpatialReference({"wkid":102100}); var basemap = new esri.layers.ArcGISTiledMapServiceLayer(basemapURL); map.addLayer(basemap);
  • 37. ArcGIS Online Services Solving problems
  • 39. Input Coordinates navigator.geolocation.getCurrentPosition(zoomToLocation, this.geolocationError); function zoomToLocation(location) { var centerPoint = esri.geometry.geographicToWebMercator( new esri.geometry.Point(location.coords.longitude, location.coords.latitude)); var symbol = new esri.symbol.PictureMarkerSymbol( {"url":”images/BluePin1LargeB.png“,”width":28,"height":28} ); var graphic = new esri.Graphic(centerPoint, symbol); geolocationLayer.graphics.add(graphic); map.centerAndZoom(centerPoint, 16); }
  • 40. Geocode Service var geocodeService = new esri.tasks.Locator("http://tasks.arcgis.com/ArcGIS/rest/services/WorldLocator/GeocodeServer"); var address = { "SingleLine": address }; locator.outSpatialReference = map.spatialReference; var params = {address: address, outFields: ["Loc_name"]} geocodeService.addressToLocations(params, geoCodeResults); Ext.each(candidates, function (candidate) { if (candidate.score > 80) { var geom = candidate.location; var graphic = new esri.Graphic(geom, symbol, null); geoCodeLayer.graphics.add(graphic); } });
  • 42. Geoprocessing Service var geoProcessService = new esri.tasks.Geoprocessor( "http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Network/ESRI_DriveTime_US/GPServer/C reateDriveTimePolygons"); var driveTimes = “1 2 3”; // minutes var featureSet = new esri.tasks.FeatureSet(); featureSet.features = features.push(geoCodeGraphic); var params = {"Location":featureSet,"Times":driveTimes }; geoProcessService.execute(params, driveTimeResults, null); function driveTimeResults(results,messages) { var features = results[0].value.features; for (var f = 0, fl = features.length; f < fl; f++) { var feature = features[f]; if (f == 0) // minute 1 feature.setSymbol(polySymbolRed); if (f ==1) // minute 2 … driveTimeLayer.add(feature); } ); }
  • 43. Find places of interest
  • 44. Feature Service – “geo query” var poiCloudFeatureService = new QueryTask ("http://services.arcgis.com/uCXeTVveQzP4IIcx/arcgis/rest/services/BIG_POI/FeatureServer/0"); var q = new esri.tasks.Query(); q.returnGeometry = true; q.outFields = ["NAME", "ADDRESS", "PHONE", "DESCRIPTION"]; q.geometry = driveTimeGeometry; q.spatialRelationship = esriSpatialRelIntersects q.where = "Cuisine = 'pizza'"; poiCloudFeatureService.execute(q, addPizzaLocations, null); function addPizzaLocations(features) { Ext.each(features , function(feature){ graphic = new esri.Graphic(feature.geometry, symbol, null); pizzaLayer.add(graphic); }); }
  • 46. Graphics Query var pizzaLayer= map.layers["pizzaLayer"]; // stay local dojo.connect(pizzaLayer, "onClick", displayInfo); function displayInfo(args) { var pizzaLocation = args.graphic; var newView = Ext.create('PF.view.PizzaLocation', { fullscreen:true, feature:pizzaLocation, title:pizzaLocation.attributes['Name'] }); this.defaultMapView.push(newView); }
  • 47. Ok, take me there!
  • 48. Route Service var routeService = new esri.tasks.RouteTask ("http://tasks.arcgisonline.com/arcgis/rest/services/Network/USA/NAServer/Route"); var params = new esri.tasks.RouteParameters(); params.stops.features[0] = startLoc; params.stops.features[1] = endLoc; params.returnDirections = true; params.directionsLengthUnits = esri.Units.MILES; routeService.solve(params, function (solveResult) { var directions = solveResult.routeResults[0].directions; directionFeatures = directions.features; var routeGeom = directions.mergedGeometry; var startPt = routeGeom.getPoint(0,0); var lastPath = routeGeom.paths[routeGeom.paths.length - 1]; var endPt = routeGeom.getPoint(routeGeom.paths.length – 1, lastPath.length - 1); } function addGraphics(startPt, endPt, lastPath)…
  • 49. Are we there yet?
  • 50. Geometry Service - geofencing Var geomService = new esri.tasks.GeometryService( "http://tasks.arcgisonline.com /ArcGIS/rest/services/Geometry/GeometryServer"); var bufParams = new esri.tasks.BufferParameters(); bufParams.distances = [ 25 ]; bufParams.geometries = [ toPt ]; bufParams.outSpatialReference = new esri.SpatialReference({"wkid":102100}); geomService.buffer(bufParams, function (geometries) { var geoFence = geometries[0]; var symbol = self.checkinToleranceSymbol; var graphic = new esri.Graphic(geoFence, symbol); geoFenceGraphicLayer.add(graphic) }); … isPoint InFence = geoFence.contains(currentLocation); // local
  • 52. Feature Service – update the cloud var checkInLayer = new FeatureLayer( "http://services.arcgis.com/uCXeTVveQzP4IIcx/arcgis/rest/services/PizzaCheckins/FeatureServer/1"); // Invisible layers var distance = getDistance(routeGraphic); var duration = getDuration(checkInTime, checkOutTime); var userRating = getUserRating(duration, distance); routeGraphic.Attributes["POI_ID"] = poi.attribues[' POI_ID' ]; routeGraphic.Attributes["Name"] = poi.attributes[' NAME' ]; routeGraphic.Attributes["CheckIn"] = checkInTime; routeGraphic.Attributes["CheckOut"] = checkOutTime; routeGraphic.Attributes["Duration"] = duration; routeGraphic.Attributes["Distance"] = distance; routeGraphic.Attributes["Rating"] = userRating; checkInLayer.applyEdits([routeGraphic], null, null);
  • 54.
  • 55. Putting it all together Monetizing your cloud
  • 56. Sharing your cloud Webmaps Gino’s sBarro ArcGIS Online Tomato Head Cloud Space
  • 58. A closer look with GIS Customers Demographics Location Spatial Patterns Monetization Advertising Stronger Business
  • 59.
  • 60. That’s your mobile, cloud, check-in solution in 75 minutes! The “Ultimate” Geospatial Sandwich
  • 61. Questions? http://edn1.esri.com/pizzafinder (via Chrome, iPhone, iPad and Android) alaframboise@esri.com | @AL_Laframboise dmartinez@esri.com | @ DMDevDude