Developing Online / Offline Mapping Applications using Adobe AIR and ArcGIS Server API for Flex - Blue Raster Esri Developer Summit 2012 Presentation
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Developing Online / Offline Mapping Applications using Adobe AIR and ArcGIS Server API for Flex - Blue Raster Esri Developer Summit 2012 Presentation

on

  • 4,763 views

 

Statistics

Views

Total Views
4,763
Views on SlideShare
2,361
Embed Views
2,402

Actions

Likes
0
Downloads
23
Comments
0

6 Embeds 2,402

http://www.blueraster.com 2393
https://www.linkedin.com 4
http://translate.googleusercontent.com 2
http://webcache.googleusercontent.com 1
http://www.linkedin.com 1
http://26c.733.myftpupload.com 1

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • TODO: Change Blue Raster Logo
  • -Web version of application-highly configurable-straight forward data modelView detailed information on sawmills. -See the progress different logging concession have in developing and implementing required forest management plans.-View mining permits-View the national origin of primary investors in logging companies operating in the Republic.
  • -Desktop version-
  • We at Blue Raster helped WRI tell their story of Forest Management throughout Central Africa. But that story was still not able to reach staff and collaborators while in the field. Allowing the data to be accessed and explore offline brought this experience to important actors, those working and living in-country.
  • ESRI Flex API works great. Easily take an existing flex application and convert it to function for desktop or mobile.
  • Identify the key features of the application to bring offlineCapture all remote dependencies for those featuresDevelop a strategy of local data storageRetro-fit web api to function seamlessly offline-This is not a linear process, but rather an iterative process in which the answer to one consideration influences other. For example, if you are unable to locally store data required for a feature to function offline, then the you must re-evaluate which features of the online application will be available when disconnected.
  • When converting an online application to function offline, you need to convert remote dependencies to LOCAL dependencies, or disable features with require them. Most likely you will favor making the assets accessible locally, but disabling features is sometimes inevitable depending on the scope, available-time and budget of the project. Example: Share with Facebook and Twitter. I’m not going to specifically discuss the process of disabling features within the application, but I will say that this is where having a loosely coupled architecture pays off. One way to Dependency injection is also very very important. I’m not talking about using a formal Dependency Injection Framework, but rather that you provide your classes and components the assets they require, instead of letting them go out and find them. In Model-View-Controller terms, a view should not be making URLRequests to access data, instead it should be given a model containing data to represent visually.
  • For each of the dependencies you identify, you need to know where it’s feasible within the context of the project to store and access locally. One example of a dependency which I found too challenging to bring offline was a exportMap request from ArcGIS Server.
  • Quick: MD5 is a cryptographic hash function which produces a unique hex-decimal string for any input. THIS IS A ONE WAY TICKET; No coming back; You can’t for example take the MD5 hash and convert it back to the original string value;
  • Quick: MD5 is a cryptographic hash function which produces a unique hex-decimal string for any input. THIS IS A ONE WAY TICKET; No coming back; You can’t for example take the MD5 hash and convert it back to the original string value;
  • Ok so now that we’ve identified the dependencies, we need to download..When implementing a strategy for storing content, I found it helpful to step away from AIR and use python. I think python is more productive for implementing data models even data models for storing content it can be very helpful to step away from AIR. AIR is robust by nature as technology for the mobile and desktop.
  • Ok so now that we’ve identified the dependencies, we need to download..When implementing a strategy for storing content, I found it helpful to step away from AIR and use python. I think python is more productive for implementing data models even data models for storing content it can be very helpful to step away from AIR. AIR is robust by nature as technology for the mobile and desktop.
  • Ok so now that we’ve identified the dependencies, we need to download..When implementing a strategy for storing content, I found it helpful to step away from AIR and use python. I think python is more productive for implementing data models even data models for storing content it can be very helpful to step away from AIR. AIR is robust by nature as technology for the mobile and desktop.
  • Ok so now that we’ve identified the dependencies, we need to download..When implementing a strategy for storing content, I found it helpful to step away from AIR and use python. I think python is more productive for implementing data models even data models for storing content it can be very helpful to step away from AIR. AIR is robust by nature as technology for the mobile and desktop.
  • Ok so now that we’ve identified the dependencies, we need to download..When implementing a strategy for storing content, I found it helpful to step away from AIR and use python. I think python is more productive for implementing data models even data models for storing content it can be very helpful to step away from AIR. AIR is robust by nature as technology for the mobile and desktop.
  • Key Point: You need a windows environmentto compile an exe / mac environment to compile .dmg
  • TODO: Get Blue Raster Logo

Developing Online / Offline Mapping Applications using Adobe AIR and ArcGIS Server API for Flex - Blue Raster Esri Developer Summit 2012 Presentation Presentation Transcript

  • 1. 2012 ESRI Developer Summit:Developing Online / Offline MappingApplications using Adobe AIR andArcGIS Server API for Flex.Blue Raster Brendan Collins@blueraster @brendancolblueraster.com/blog bcdcspatial.blogspot.com
  • 2. Online DesktopOffline Mobile
  • 3. OFFLINE CONSIDERATIONS• Which features to support…• How to capture remote dependencies…• How to store dependencies locally...• How to extend application code function offline…
  • 4. CAPTURING DEPENDENCIESREMOTEDEPENDENCIES • Any asset which is not accessible locally on the user’s machine and is required for an application feature. • Map Tiles • Geometry / Attributes • Non-geographic assets
  • 5. CAPTURING DEPENDENCIESIDENTIFYINGREMOTE • Monitor traffic usingDEPENDENCIES HTTP Proxy (e.g. Charles, Firebug) • Is the dependence dynamically generated or already sitting on disk?
  • 6. How do I store / retrieve these assets locally?
  • 7. STORING DEPENDENCIESGeneral Strategy – Keep track of asset urls – Keep storage simple… – No normalization of response data
  • 8. STORING DEPENDENCIESLocal File System – AIR File API – Easy to implement – Problematic as number of assets increase – Idea: Name files the MD5 of their URL
  • 9. STORING DEPENDENCIESSQLite – Scales better than File System – Power of SQL for attribute queries – Simple Data Model – IDEA: Store AMF directly as Base64 Encoded Text
  • 10. STORING DEPENDENCIESTile Packages (10.1) – No need to “roll our own” tile storage strategy – Creation from within ArcGIS Desktop – IDEA: Check out TPKLayer for Flex API (Thank You Mansour!)
  • 11. ArcGIS Server API for Python…?
  • 12. Python / Django • Batteries Included! • Simple Wrapper for AGS REST-API • Django Management Commands • Django O.R.M. for SQLite
  • 13. Am I Connected ?(using URLMonitor)
  • 14. Accessing Data in SQLite
  • 15. ASYNC CONNECTION EXAMPLE
  • 16. SYNC CONNECTION EXAMPLE
  • 17. Retro-fitTiled Map Service Layer
  • 18. EXTENDINGTILED MAP SERVICE LAYER
  • 19. EXTENDINGTILED MAP SERVICE LAYER
  • 20. EXTENDINGTILED MAP SERVICE LAYER
  • 21. EXTENDINGTILED MAP SERVICE LAYER
  • 22. AIR Deployment Options
  • 23. • AIR Captive Runtime (Desktop) –Windows (.exe) –Mac (.dmg) –No need to install AIR Runtime separately
  • 24. • Provide an AIR Installer (.air) –Cross platform installer –Encapsulates data –Requires separate AIR runtime installation
  • 25. • Compile for Mobile –iOS (.ipa): App Store or register devices for limited- distribution –Android (.apk):Google Play (Android Market) or distribute yourself.
  • 26. Thank You! visit blueraster.com/blog for additional informationBlue Raster Brendan Collins@blueraster @brendancolblueraster.com/blog bcdcspatial.blogspot.com