Display common symbols for all graphics in a graphics overlay with a renderer.
Use case
Graphics are often used to display data that changes location regularly because they are held in memory instead of being persisted to the map. When a number of graphics are required to share the same style, a simple renderer can be applied to the graphics overlay containing the graphics. For example, the location of mobile taxis from a same company could be plotted on a map with each taxi marked by a relevant symbol.
How to use the sample
The sample loads with a predefined simple renderer, which displays a red cross simple marker symbol for the graphics in the graphics overlay.
How it works
- Create a
GraphicsOverlay
. - Create a number of
Point
objects with x, y, and spatial reference parameters. - Create a number of
Graphic
objects with the points from step 2. - Add the graphics to the graphics overlay.
- Create a
SimpleMarkerSymbol
passing in style, color, and size as parameters. - Create a
SimpleRenderer
. - Set the simple renderer to the graphics overlay.
Relevant API
- Graphic
- GraphicsOverlay
- Point
- SimpleMarkerSymbol
- SimpleRenderer
Additional information
Renderers are used to display graphics that don't already have a symbol set. A renderer will not override a graphic's symbol if one has been set.
Tags
graphics, marker, renderer, symbol, symbolize, symbology
Sample Code
/* Copyright 2025 Esri
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
package com.esri.arcgismaps.sample.applysimplerenderertographicsoverlay.components
import android.app.Application
import androidx.lifecycle.AndroidViewModel
import androidx.lifecycle.viewModelScope
import com.arcgismaps.Color
import com.arcgismaps.geometry.Point
import com.arcgismaps.geometry.SpatialReference
import com.arcgismaps.mapping.ArcGISMap
import com.arcgismaps.mapping.BasemapStyle
import com.arcgismaps.mapping.Viewpoint
import com.arcgismaps.mapping.symbology.SimpleMarkerSymbol
import com.arcgismaps.mapping.symbology.SimpleMarkerSymbolStyle
import com.arcgismaps.mapping.symbology.SimpleRenderer
import com.arcgismaps.mapping.view.Graphic
import com.arcgismaps.mapping.view.GraphicsOverlay
import com.esri.arcgismaps.sample.sampleslib.components.MessageDialogViewModel
import kotlinx.coroutines.launch
class ApplySimpleRendererToGraphicsOverlayViewModel(app: Application) : AndroidViewModel(app) {
// ArcGISMap centered on Yellowstone National Park
val arcGISMap = ArcGISMap(BasemapStyle.ArcGISImagery).apply {
initialViewpoint = Viewpoint(latitude = 44.462, longitude = -110.829, scale = 1e4)
}
// GraphicsOverlay with a simple renderer (red cross marker)
val graphicsOverlay = GraphicsOverlay().apply {
// Create points for geysers in Yellowstone
val oldFaithful = Point(-110.828140, 44.460458, SpatialReference.wgs84())
val cascadeGeyser = Point(-110.829004, 44.462438, SpatialReference.wgs84())
val plumeGeyser = Point(-110.829381, 44.462735, SpatialReference.wgs84())
// Add graphics for each point
graphics.addAll(
listOf(
Graphic(oldFaithful),
Graphic(cascadeGeyser),
Graphic(plumeGeyser)
)
)
// Create a simple renderer with a red cross symbol
renderer = SimpleRenderer(
symbol = SimpleMarkerSymbol(
style = SimpleMarkerSymbolStyle.Cross,
color = Color.red,
size = 12f
)
)
}
// Message dialog for error handling
val messageDialogVM = MessageDialogViewModel()
init {
viewModelScope.launch {
arcGISMap.load().onFailure { messageDialogVM.showMessageDialog(it) }
}
}
}