Programming patterns

The following programming patterns are discussed in this chapter:

  • Loading resources asynchronously — Use the Loadable API to load metadata asynchronously for maps, layers, and other resources to do such things as monitor the load status of the resource, handle concurrent and repeated requests to load the resource, cancel a load, retry to load if previous attempts failed, and handle circumstances such as network outages or service interruption.
  • Tasks and jobs — Tasks and jobs are used to perform work asynchronously for potentially long-running operations. Examples include Geocode and search, Route and directions, and Utility network analysis.

  • Performance considerations — Decisions you make when choosing things like rendering mode, scale range, and use of graphics versus features may have an effect on your app's performance.

  • Offline maps, scenes, and data explores a range of offline work patterns that you can implement to allow users to continue being productive when network connectivity is poor or nonexistent. Which offline pattern you choose determines whether or not your users can define their own map area, and, if they are editing, how multiple editors will sync their edits back to a web map or back to a branch version.

  • SwiftUI View programming patterns

    • Manage GeoView state — Manage the state of your app's maps, scenes, and any associated data using a model. This model preserves your program state and separates your application data and business logic from your user interface.

    • Configure a GeoView — Customize the appearance, behavior, and gestures of your app's map or scene views using view modifiers.

    • Perform GeoView operations — Execute operations, such as identify and set viewpoint, on a map or scene view using instance methods provided by their proxy structures.

    • Concurrent GeoView tasks — Use the task view modifier and Task block to execute asynchronous workflows in map and scene views.

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.