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

ArcGIS
ArcGISArcGIS
ArcGISEsri
 
GeoCollector for ArcPad
GeoCollector for ArcPadGeoCollector for ArcPad
GeoCollector for ArcPadEsri
 
Gis & Social Media Integration
Gis & Social Media IntegrationGis & Social Media Integration
Gis & Social Media IntegrationAllan Laframboise
 
Mapathon 2013 - Google Maps Javascript API
Mapathon 2013 - Google Maps Javascript APIMapathon 2013 - Google Maps Javascript API
Mapathon 2013 - Google Maps Javascript APINAILBITER
 
StreetMap Premium for ArcGIS
StreetMap Premium for ArcGISStreetMap Premium for ArcGIS
StreetMap Premium for ArcGISEsri
 
Super map gis 8c
Super map gis 8cSuper map gis 8c
Super map gis 8cDaniel PI
 
AWS Customer Presentation - ESRI; Maps and Apps on AWS
AWS Customer Presentation - ESRI; Maps and Apps on AWS AWS Customer Presentation - ESRI; Maps and Apps on AWS
AWS Customer Presentation - ESRI; Maps and Apps on AWS Amazon Web Services
 

What's hot (7)

ArcGIS
ArcGISArcGIS
ArcGIS
 
GeoCollector for ArcPad
GeoCollector for ArcPadGeoCollector for ArcPad
GeoCollector for ArcPad
 
Gis & Social Media Integration
Gis & Social Media IntegrationGis & Social Media Integration
Gis & Social Media Integration
 
Mapathon 2013 - Google Maps Javascript API
Mapathon 2013 - Google Maps Javascript APIMapathon 2013 - Google Maps Javascript API
Mapathon 2013 - Google Maps Javascript API
 
StreetMap Premium for ArcGIS
StreetMap Premium for ArcGISStreetMap Premium for ArcGIS
StreetMap Premium for ArcGIS
 
Super map gis 8c
Super map gis 8cSuper map gis 8c
Super map gis 8c
 
AWS Customer Presentation - ESRI; Maps and Apps on AWS
AWS Customer Presentation - ESRI; Maps and Apps on AWS AWS Customer Presentation - ESRI; Maps and Apps on AWS
AWS Customer Presentation - ESRI; Maps and Apps on AWS
 

Viewers also liked

Benchmark Retail #5 - Inspirations Noël 2016
Benchmark Retail #5 - Inspirations Noël 2016Benchmark Retail #5 - Inspirations Noël 2016
Benchmark Retail #5 - Inspirations Noël 2016Beausoleil
 
Creating killer location-based mobile apps
Creating killer location-based mobile apps Creating killer location-based mobile apps
Creating killer location-based mobile apps Jean-Luc David
 
Mapserver vs. geoserver
Mapserver vs. geoserverMapserver vs. geoserver
Mapserver vs. geoserver鸣 饶
 
Retail tour Londres
Retail tour LondresRetail tour Londres
Retail tour LondresBeausoleil
 
Benchmark retail #4 - Idées et inspirations pour vos vitrines.
Benchmark retail #4 - Idées et inspirations pour vos vitrines.Benchmark retail #4 - Idées et inspirations pour vos vitrines.
Benchmark retail #4 - Idées et inspirations pour vos vitrines.Beausoleil
 
Le meilleur des vitrines de Noël - Décembre 2016
Le meilleur des vitrines de Noël - Décembre 2016Le meilleur des vitrines de Noël - Décembre 2016
Le meilleur des vitrines de Noël - Décembre 2016Beausoleil
 
Benchmark Retail - Tendances Printemps-Eté 2017
Benchmark Retail - Tendances Printemps-Eté 2017Benchmark Retail - Tendances Printemps-Eté 2017
Benchmark Retail - Tendances Printemps-Eté 2017Beausoleil
 

Viewers also liked (7)

Benchmark Retail #5 - Inspirations Noël 2016
Benchmark Retail #5 - Inspirations Noël 2016Benchmark Retail #5 - Inspirations Noël 2016
Benchmark Retail #5 - Inspirations Noël 2016
 
Creating killer location-based mobile apps
Creating killer location-based mobile apps Creating killer location-based mobile apps
Creating killer location-based mobile apps
 
Mapserver vs. geoserver
Mapserver vs. geoserverMapserver vs. geoserver
Mapserver vs. geoserver
 
Retail tour Londres
Retail tour LondresRetail tour Londres
Retail tour Londres
 
Benchmark retail #4 - Idées et inspirations pour vos vitrines.
Benchmark retail #4 - Idées et inspirations pour vos vitrines.Benchmark retail #4 - Idées et inspirations pour vos vitrines.
Benchmark retail #4 - Idées et inspirations pour vos vitrines.
 
Le meilleur des vitrines de Noël - Décembre 2016
Le meilleur des vitrines de Noël - Décembre 2016Le meilleur des vitrines de Noël - Décembre 2016
Le meilleur des vitrines de Noël - Décembre 2016
 
Benchmark Retail - Tendances Printemps-Eté 2017
Benchmark Retail - Tendances Printemps-Eté 2017Benchmark Retail - Tendances Printemps-Eté 2017
Benchmark Retail - Tendances Printemps-Eté 2017
 

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

Building ArcGIS Mobile Solutions in the Cloud
Building ArcGIS Mobile Solutions in the CloudBuilding ArcGIS Mobile Solutions in the Cloud
Building ArcGIS Mobile Solutions in the CloudAllan Laframboise
 
Navteq Developer Days - ArcGIS + POI
Navteq Developer Days - ArcGIS + POINavteq Developer Days - ArcGIS + POI
Navteq Developer Days - ArcGIS + POIAllan Laframboise
 
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
 
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
 
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
 
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
 
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
 

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

Building ArcGIS Mobile Solutions in the Cloud
Building ArcGIS Mobile Solutions in the CloudBuilding ArcGIS Mobile Solutions in the Cloud
Building ArcGIS Mobile Solutions in the Cloud
 
Navteq Developer Days - ArcGIS + POI
Navteq Developer Days - ArcGIS + POINavteq Developer Days - ArcGIS + POI
Navteq Developer Days - ArcGIS + POI
 
GeoAdmin API & Mobile API, 2012
GeoAdmin API & Mobile API, 2012GeoAdmin API & Mobile API, 2012
GeoAdmin API & Mobile API, 2012
 
Esri Map App Builders
Esri Map App BuildersEsri Map App Builders
Esri Map App Builders
 
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
 
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
 
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
 
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...
 
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...
 
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...
 

Recently uploaded

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking MenDelhi Call girls
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Allon Mureinik
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Hyundai Motor Group
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...HostedbyConfluent
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitecturePixlogix Infotech
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024Scott Keck-Warren
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure servicePooja Nehwal
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?XfilesPro
 
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
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 3652toLead Limited
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
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
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAndikSusilo4
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...shyamraj55
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhisoniya singh
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationSafe Software
 

Recently uploaded (20)

08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men08448380779 Call Girls In Greater Kailash - I Women Seeking Men
08448380779 Call Girls In Greater Kailash - I Women Seeking Men
 
Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)Injustice - Developers Among Us (SciFiDevCon 2024)
Injustice - Developers Among Us (SciFiDevCon 2024)
 
Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2Next-generation AAM aircraft unveiled by Supernal, S-A2
Next-generation AAM aircraft unveiled by Supernal, S-A2
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
Transforming Data Streams with Kafka Connect: An Introduction to Single Messa...
 
Understanding the Laravel MVC Architecture
Understanding the Laravel MVC ArchitectureUnderstanding the Laravel MVC Architecture
Understanding the Laravel MVC Architecture
 
SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024SQL Database Design For Developers at php[tek] 2024
SQL Database Design For Developers at php[tek] 2024
 
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
Neo4j - How KGs are shaping the future of Generative AI at AWS Summit London ...
 
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure serviceWhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
WhatsApp 9892124323 ✓Call Girls In Kalyan ( Mumbai ) secure service
 
How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?How to Remove Document Management Hurdles with X-Docs?
How to Remove Document Management Hurdles with X-Docs?
 
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
 
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
Tech-Forward - Achieving Business Readiness For Copilot in Microsoft 365
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
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
 
Pigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food ManufacturingPigging Solutions in Pet Food Manufacturing
Pigging Solutions in Pet Food Manufacturing
 
Azure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & ApplicationAzure Monitor & Application Insight to monitor Infrastructure & Application
Azure Monitor & Application Insight to monitor Infrastructure & Application
 
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
Automating Business Process via MuleSoft Composer | Bangalore MuleSoft Meetup...
 
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | DelhiFULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
FULL ENJOY 🔝 8264348440 🔝 Call Girls in Diplomatic Enclave | Delhi
 
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry InnovationBeyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
Beyond Boundaries: Leveraging No-Code Solutions for Industry Innovation
 

Building a 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