Styles and data visualization

A comprehensive API is provided for visualizing geographic data in a map (2D) or scene (3D). You can create a variety of types of symbols and use them to render your data in several ways.

Your app can:

  • Symbolize features and graphics.
  • Visualize data in 3D.
  • Display labels while controlling positioning, overlaps, and conflicts.
  • Render data according to attribute values.
  • Display different data and symbols at different scales.
  • Use a dictionary renderer to symbolize many unique combinations of attribute values.

Features and graphics

Features and graphics are used to represent real-world objects on a map or scene. Every feature and graphic has a geometry representing its shape and location and may have attributes that further describe the object it represents. There are some fundamental differences, however, between them. The one you choose for your use case may depend on how they are persisted, how it handles different geometry types and attribute schemas, and how they are symbolized and displayed. In general, graphics are best suited for the temporary display of application-specific objects that are not persisted when the application closes.

See the Features and graphics topic for more information about when to use each of these geoelements.

To learn about adding graphics to your geoview, see Add graphics to a map view and Add graphics to a scene view.

3D display

To take full advantage of the 3D environment, features and graphics provide additional API for controlling geoelement display in a scene or scene view. A set of symbols has been designed exclusively for three-dimensional display.

The Render features and graphics in 3D topic describes considerations that are specific to displaying data in 3D.


Your app can load maps and scenes created with ArcGIS Pro or the ArcGIS Online Map or Scene Viewers. These tools allow you to style your map or scene as you want it to appear in your app without having to write code. The advanced symbols used by ArcGIS Pro and the ArcGIS Online Map Viewer, also known as Cartographic Information Model (CIM) symbols, are supported by this API.

You can also create your own symbols and control the display of features and graphics in your app. See the Symbols, renderers, and styles topic for information about symbolizing data.


A renderer is a collection of one or more symbols. When applied to a layer or graphics overlay, a renderer displays geoelements using the appropriate symbol. If it contains more than a single symbol, a renderer uses logic to determine the symbol to apply to each geoelement, based on one or several attribute values. A set of raster renderers is provided to display raster data according to their cell values.

When symbolizing geoelements in your map, you may need to convey several pieces of information, from different attributes, with a single symbol. You can try to symbolize such data using a unique value renderer, but as the number of fields and values increases, that approach becomes impractical. With a dictionary renderer, however, you can build each symbol on the fly based on one or several attribute values and also handle a nearly infinite number of unique combinations.

See the Symbols, renderers, and styles topic for an overview of the available renderers. Display symbols with a dictionary renderer describes how to create and apply a dictionary renderer to a layer.


Feature layers, graphics overlays, and map image layer sublayers in your app can be labeled using a combination of attribute values, text strings, and values calculated with an expression. You can determine how labels are positioned and prioritized, and how conflicts between overlapping labels are automatically and dynamically resolved.

See Add labels for more information.



Add graphics with symbols

Add graphics with renderer

Custom dictionary style

Simple marker symbol

Unique value renderer

Scene symbols

Simple renderer

Stretch renderer


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