You are using a browser that is no longer supported. Please use the latest version of Google Chrome, Mozilla Firefox, Apple Safari, or Microsoft Edge. For more information please see the System Requirements.
Skip To ContentArcGIS for DevelopersSign In Dashboard

Unsupported browser

You are using a browser that is not supported. JavaScript API works on the latest versions of Google Chrome, Mozilla Firefox, Apple Safari, or Microsoft Edge. Use one of these browsers and provide your feedback through GeoNet, the Esri Community.

  • {}
  • Firefox
  • Safari
  • undefined

Note: Support for 3D on mobile devices may vary, view the system requirements for more information.

This sample demonstrates how to construct a HeatmapRenderer for visualizing large, dense point datasets. The HeatmapRenderer visualizes points as a raster surface where strong colors indicate areas with a high density of points. Areas with weak or no colors indicate places that don't have many points.

Knowledge of how the heatmap is implemented is crucial for understanding how to construct the renderer. Each pixel in the view is assigned an intensity value depending on its proximity to one or more points. If a field is specified, then the intensity value is multiplied by the field value.

The heatmap is constructed by passing a set of colorStops to the renderer. These map a specific color to a ratio value. The ratio represents the ratio of the pixel's intensity value to the maxPixelIntensity of the renderer. Therefore, the lower the maxPixelIntensity, the hotter the map will look.

const renderer = {
  type: "heatmap",
  colorStops: [
    { color: "rgba(63, 40, 102, 0)", ratio: 0 },
    { color: "#472b77", ratio: 0.083 },
    { color: "#4e2d87", ratio: 0.166 },
    { color: "#563098", ratio: 0.249 },
    { color: "#5d32a8", ratio: 0.332 },
    { color: "#6735be", ratio: 0.415 },
    { color: "#7139d4", ratio: 0.498 },
    { color: "#7b3ce9", ratio: 0.581 },
    { color: "#853fff", ratio: 0.664 },
    { color: "#a46fbf", ratio: 0.747 },
    { color: "#c29f80", ratio: 0.83 },
    { color: "#e0cf40", ratio: 0.913 },
    { color: "#ffff00", ratio: 1 }
  maxPixelIntensity: 25,
  minPixelIntensity: 0

const layer = new CSVLayer({
  url: "",
  title: "Magnitude 2.5+ earthquakes from the last week",
  renderer: renderer

See the HeatmapRenderer documentation for more specifics of this implementation.

Additional visualization samples and resources

Sample search results