{"id":2967996,"date":"2026-06-02T05:00:30","date_gmt":"2026-06-02T12:00:30","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2967996"},"modified":"2026-06-02T08:59:49","modified_gmt":"2026-06-02T15:59:49","slug":"new-color-ramps-color-maps-native-maps-sdks","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks","title":{"rendered":"Render data with new color ramps and color maps in Native Maps SDKs"},"author":10242,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[738191],"tags":[28911,768202,781125,375682,25631],"industry":[],"product":[769142,776202,768902,769152,768912,36601],"class_list":["post-2967996","blog","type-blog","status-publish","format-standard","hentry","category-developers","tag-accessibility","tag-arcgis-maps-sdks-for-native-apps","tag-color-maps","tag-color-ramps","tag-spatial-analysis","product-sdk-net","product-sdk-flutter","product-sdk-kotlin","product-sdk-qt","product-sdk-swift","product-developers"],"acf":{"authors":[{"ID":10242,"user_firstname":"Rachael","user_lastname":"Ellen","nickname":"Rachael Ellen","user_nicename":"rellen","display_name":"Rachael Ellen","user_email":"rellen@esri.com","user_url":"https:\/\/dev.to\/rachaele\/","user_registered":"2019-11-29 11:58:45","user_description":"Rachael is a senior product engineer in the ArcGIS Maps SDKs for Native Apps team, working on the high performance spatial analysis APIs. Following an academic career in geology, she switched careers by learning to code and now enjoys building apps with Native Maps SDKs. She loves sharing code examples, fun geospatial development workflows and the latest product updates with developers via blogs and code.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/01\/LinkedIn_Photo-465x465.jpeg' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"short_description":"Learn how to visualize raster and spatial analysis data using new color ramp and color map options in Native Maps SDKs.","flexible_content":[{"acf_fc_layout":"content","content":"<p>With the 300.0 release of ArcGIS Maps SDKs for Native Apps, we\u2019ve enhanced our color ramp and color map options to make data visualization more convenient and customizable. This includes support for rendering both raster data, and results from the new spatial analysis APIs in your apps.<\/p>\n<p>In this release, you can now:<\/p>\n<ul>\n<li><strong>Render your data from a choice of ten new preset color ramp types for faster app development<\/strong><\/li>\n<li><strong>Customize your own color ramps with a linear gradient or weighted color ramp option for enhanced continuous data interpretation<\/strong><\/li>\n<li><strong>Directly map colors to values with the enhanced color map functionality for precise discrete data classification<\/strong><\/li>\n<\/ul>\n<p>These enhancements build directly on the existing Native Maps SDKs color ramp and color map rendering patterns, making it easy to integrate these new data visualization options into existing applications.<\/p>\n<p>In this blog post, I\u2019ll walk through what\u2019s new and show how the same concepts apply whether you\u2019re rendering rasters or analysis output.<\/p>\n<p style=\"text-align: center;\"><em>The examples shown throughout this blog post use Flutter Maps SDK for the code snippets, but the same rendering concepts apply across all Native Maps SDKs.<\/em><\/p>\n<h2>Continuous data rendering options with new color ramp options<\/h2>\n<p>Continuous data, such as elevation or temperature, represent a range of numeric values that transition smoothly rather than belonging to fixed classes such as with discrete data. The enhanced <code>ColorRamp<\/code> API options allow you to visualize these numeric ranges with preset and customizable gradients of color. This makes it easier to:<\/p>\n<ul>\n<li>Render continuous datasets with smooth, meaningful gradients for your app\u2019s audience<\/li>\n<li>Emphasize patterns, trends, and subtle variation in the data<\/li>\n<li>Build apps where users can adjust how rasters or analysis output are rendered<\/li>\n<\/ul>\n<p>You can set a color ramp to a <code>StretchRenderer<\/code>, <code>PercentClipStretchParameters<\/code> (to use in a <code>StretchRenderer<\/code>), or a <code>BlendRenderer<\/code> and set the renderer to a raster layer. You can also set a color ramp to a field analysis created with a continuous field function in the new <a href=\"https:\/\/developers.arcgis.com\/flutter\/spatial-analysis\/\">spatial analysis APIs<\/a> with a <code>StretchRenderer<\/code>.<\/p>\n<h3>New preset color ramp options<\/h3>\n<p>In this release, we\u2019ve added ten new preset color ramps that provide developers a quick and convenient starting point for presenting data for common continuous dataset use cases.<\/p>\n<p>Why ten? We decided to add a carefully curated selection to the three existing (and slightly outdated) color ramp presets that the API already provided. We began by selecting five color ramps commonly used in <a href=\"https:\/\/doc.esri.com\/en\/arcgis-pro\/latest\/help\/mapping\/layer-properties\/work-with-color-schemes.html\">ArcGIS Pro<\/a> (bathymetry, temperature, heatmap, surface and precipitation), and then added five more that specifically cater to color-blind users. These accessibility-friendly options are from the &#8220;cividis&#8221; family of color ramps (cividis, viridis, magma, inferno and plasma), which were <a href=\"https:\/\/bids.github.io\/colormap\/\">carefully created<\/a> by the broader scientific community.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2968156,"id":2968156,"title":"PresetColorRamps","filename":"PresetColorRamps-scaled.png","filesize":3097042,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/PresetColorRamps-scaled.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks\/presetcolorramps","alt":"Five mobile phone screenshots displaying color ramps.","author":"10242","description":"","caption":"The new preset color ramp types of precipitation, heat map, bathymetric scale, surface and temperature.","name":"presetcolorramps","status":"inherit","uploaded_to":2967996,"date":"2026-05-28 12:19:45","modified":"2026-05-28 12:21:13","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":2560,"height":1069,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/PresetColorRamps-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/PresetColorRamps-scaled.png","medium-width":464,"medium-height":194,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/PresetColorRamps-scaled.png","medium_large-width":768,"medium_large-height":321,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/PresetColorRamps-scaled.png","large-width":1920,"large-height":802,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/PresetColorRamps-1536x641.png","1536x1536-width":1536,"1536x1536-height":641,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/PresetColorRamps-2048x855.png","2048x2048-width":2048,"2048x2048-height":855,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/PresetColorRamps-826x345.png","card_image-width":826,"card_image-height":345,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/PresetColorRamps-1920x802.png","wide_image-width":1920,"wide_image-height":802}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"image","image":{"ID":2968157,"id":2968157,"title":"AccessibleColorRamps","filename":"AccessibleColorRamps-scaled.png","filesize":4357334,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/AccessibleColorRamps-scaled.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks\/accessiblecolorramps","alt":"Five mobile phone screenshots displaying color-blind friendly color ramps.","author":"10242","description":"","caption":"A temperature dataset over the Karakoram mountain range, displayed using the new inferno, magma, plasma, viridis, and cividis preset color ramp types.","name":"accessiblecolorramps","status":"inherit","uploaded_to":2967996,"date":"2026-05-28 12:21:50","modified":"2026-05-28 12:22:35","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":2560,"height":1076,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/AccessibleColorRamps-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/AccessibleColorRamps-scaled.png","medium-width":464,"medium-height":195,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/AccessibleColorRamps-scaled.png","medium_large-width":768,"medium_large-height":323,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/AccessibleColorRamps-scaled.png","large-width":1920,"large-height":807,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/AccessibleColorRamps-1536x645.png","1536x1536-width":1536,"1536x1536-height":645,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/AccessibleColorRamps-2048x861.png","2048x2048-width":2048,"2048x2048-height":861,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/AccessibleColorRamps-826x347.png","card_image-width":826,"card_image-height":347,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/AccessibleColorRamps-1920x807.png","wide_image-width":1920,"wide_image-height":807}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>To apply a preset color ramp in code, simply choose one of the <code>PresetColorRampType<\/code> enums, such as in the following example using viridis.<\/p>\n<ol>\n<li>First, create a <code>StretchRenderer<\/code> from <code>MinMaxStretchParameters<\/code>.<\/li>\n<li>Then create a <code>ColorRamp<\/code> with a <code>PresetColorRampType.viridis<\/code> as the first parameter, along with the size parameter.\n<ul>\n<li>The size parameter refers to the number of steps in the complete resultant gradient<\/li>\n<\/ul>\n<\/li>\n<li>Set the renderer on the raster layer, and add it to the map\u2019s operational layers to display it in the app.<\/li>\n<\/ol>\n<pre><code>\r\n rasterLayer.renderer = StretchRenderer(\r\n   stretchParameters: MinMaxStretchParameters(\r\n     minValues: [<span style=\"color: #005cc5;\">0<\/span>], \/\/ min elevation value\r\n     maxValues: [<span style=\"color: #005cc5;\">873<\/span>], \/\/ max elevation value\r\n   ),\r\n   gammas: gammas,\r\n   estimateStatistics: estimateStatistics,\r\n   colorRamp: ColorRamp(type: PresetColorRampType.viridis, size: <span style=\"color: #005cc5;\">256<\/span>),\r\n );\r\n\r\nmap.operationalLayers.add(rasterLayer);\r\n<\/code><\/pre>\n<p>These new preset color ramp options provide an easy on ramp (no pun intended\u2026!) for developers who want fast, sensible visualizations without spending time designing a color ramp from scratch. And the code required to set it up is minimal. But for those developers who want more color options beyond these ten new options \u2013 read on!<\/p>\n<h3>Custom color ramps for precise control<\/h3>\n<p>Preset color ramps are often enough, but not always. Many datasets benefit from visualization that reflects their thresholds or analytical\/cartographical intent or even that match an app\u2019s design. To support this visualization, we\u2019ve introduced two new ways to construct custom color ramps, giving you finer control when you need it and a way to use any and every color combination you can dream up!<\/p>\n<h4><strong>New Colors constructor<\/strong><\/h4>\n<p>The new <code>ColorRamp.fromColors<\/code> constructor lets you create a color ramp where the given list of colors are blended evenly across the full data range, i.e. a linear gradient between colors. This is ideal for clean, minimal visualizations in evenly distributed continuous datasets where no specific range needs emphasis, such as with elevation or temperature datasets.<\/p>\n<p>In the example app below, using a digital terrain model of the Isle of Arran, Scotland, I\u2019ve used the \u201csnowy mountain\u201d color ramp, copied over from the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/visualization\/symbols-color-ramps\/esri-color-ramps\/\">Javascript Maps SDK color ramp library<\/a> \u2013 well worth a browse if you haven\u2019t come across this before! This allows me to render the data such that there is a consistent, even gradient from sea level (blue) to peak elevation (white).<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2968171,"id":2968171,"title":"WithColorsWide","filename":"WithColorsWide-scaled.png","filesize":740938,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorsWide-scaled.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks\/withcolorswide","alt":"Mobile phone screenshot showing a digital elevation model of Arran with a blue to white color ramp applied.","author":"10242","description":"","caption":"Elevation data on the Isle of Arran, Scotland, rendered using a color ramp from a list of colors blending from blue to white.","name":"withcolorswide","status":"inherit","uploaded_to":2967996,"date":"2026-05-28 12:55:30","modified":"2026-05-28 12:56:05","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":2560,"height":1841,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorsWide-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorsWide-scaled.png","medium-width":363,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorsWide-scaled.png","medium_large-width":768,"medium_large-height":552,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorsWide-scaled.png","large-width":1502,"large-height":1080,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorsWide-1536x1104.png","1536x1536-width":1536,"1536x1536-height":1104,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorsWide-2048x1473.png","2048x2048-width":2048,"2048x2048-height":1473,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorsWide-647x465.png","card_image-width":647,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorsWide-1502x1080.png","wide_image-width":1502,"wide_image-height":1080}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>To set up a custom color ramp from colors in code:<\/p>\n<ol>\n<li>First, create a list of colors.<\/li>\n<li>Then, use the <code>ColorRamp.fromColors<\/code> constructor to create a <code>ColorRamp<\/code> from the colors.<\/li>\n<li>Use the color ramp in the colorRamp parameter on the <code>StretchRenderer<\/code> constructor.<\/li>\n<li>Then set the renderer to the raster layer, and add the raster layer to the map\u2019s operational layers to display the data.<\/li>\n<\/ol>\n<pre><code>\r\n<span style=\"color: #d73a49;\">const<\/span> snowyMountain = [\r\n    Color(<span style=\"color: #005cc5;\">0xFF60A3D8<\/span>),\r\n    Color(<span style=\"color: #005cc5;\">0xFF87B3DE<\/span>),\r\n    Color(<span style=\"color: #005cc5;\">0xFFA9C4E5<\/span>),\r\n    Color(<span style=\"color: #005cc5;\">0xFFC9D5EB<\/span>),\r\n    Color(<span style=\"color: #005cc5;\">0xFFE8E6F1<\/span>),\r\n  ];\r\n\r\n<span style=\"color: #d73a49;\">final<\/span> colorRamp = ColorRamp.fromColors(\r\n      colors: snowyMountain,\r\n      size: <span style=\"color: #005cc5;\">256<\/span>,\r\n    );\r\n\r\n    <span style=\"color: #d73a49;\">var<\/span> stretchRenderer = StretchRenderer(\r\n      stretchParameters: minMaxStretchParams,\r\n      gammas: gammas,\r\n      estimateStatistics: estimateStatistics,\r\n      colorRamp: colorRamp,\r\n    );\r\n\r\n    rasterLayer = RasterLayer.withRaster(raster)\r\n        ..renderer = stretchRenderer;\r\n\r\n    map.operationalLayers.add(rasterLayer);\r\n\r\n<\/code><\/pre>\n<h4><strong>New ColorStops constructor<\/strong><\/h4>\n<p>Using <code>ColorRamp.fromColorStops<\/code>, you can define individual colors and their relative positions along the ramp. This allows you to emphasize specific value ranges (such as temperatures near freezing), create non-linear gradients with weighted color stops, and help draw a user\u2019s eye to a specific data range.<\/p>\n<p>This approach is useful for contextual rasters or when you want specific ranges to stand out visually. For example, in the app below, I wanted to draw attention to the areas of higher ground in the digital terrain model of the Isle of Arran, Scotland, using the same \u201csnowy mountain\u201d colors as in the <code>fromColors<\/code> approach. In this app, I\u2019ve created a simple slider that updates the color stops so I can fine tune where I want the lighter elements of the color ramp to highlight the upland terrain.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2968173,"id":2968173,"title":"WithColorStopsWide","filename":"WithColorStopsWide-scaled.png","filesize":801943,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorStopsWide-scaled.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks\/withcolorstopswide","alt":"Mobile phone screenshot showing a digital terrain model rendered with a blue to white color ramp at set intervals.","author":"10242","description":"","caption":"Elevation data of the Isle of Arran, Scotland, rendered using a weighted color ramp from a list of colors and positions, blending from blue to white at set intervals. Most of the color variation happens early in the ramp, where I\u2019ve assigned positions at 0, 0.1, 0.2, 0.3 and 0.4. The final color defined at position 0.4 then continues unchanged to the end of the ramp (position 1.0), meaning the last color extends to the end of the ramp.","name":"withcolorstopswide","status":"inherit","uploaded_to":2967996,"date":"2026-05-28 13:01:18","modified":"2026-06-02 12:06:25","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":2560,"height":1839,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorStopsWide-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorStopsWide-scaled.png","medium-width":363,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorStopsWide-scaled.png","medium_large-width":768,"medium_large-height":552,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorStopsWide-scaled.png","large-width":1503,"large-height":1080,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorStopsWide-1536x1103.png","1536x1536-width":1536,"1536x1536-height":1103,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorStopsWide-2048x1471.png","2048x2048-width":2048,"2048x2048-height":1471,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorStopsWide-647x465.png","card_image-width":647,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/WithColorStopsWide-1504x1080.png","wide_image-width":1504,"wide_image-height":1080}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>To set up a custom color ramp from color stops in code:<\/p>\n<ol>\n<li>First, define a list of colors.<\/li>\n<li>Then, create a list of <code>ColorStop<\/code>s, using the colors created and assigning a position to each.\n<ul>\n<li><em>The position parameter determines where each color is anchored along the ramp, and controls how the colors are distributed across it. Colors are smoothly interpolated between consecutive stops, such that each position defines a transition interval. Closely spaced color stops produce rapid color changes, whilst wider spacing yields smoother gradients<\/em><em>.<\/em><\/li>\n<\/ul>\n<\/li>\n<li>Then, create a <code>ColorRamp<\/code> using the <code>ColorRamp.fromColorStops<\/code> constructor.<\/li>\n<li>Use the color ramp in the <code>colorRamp<\/code> parameter in the <code>StretchRenderer<\/code> constructor.<\/li>\n<li>Finally, set that stretch renderer to the raster layer before adding it to the map\u2019s operational layers for display.<\/li>\n<\/ol>\n<pre><code>\r\n<span style=\"color: #d73a49;\">final<\/span> snowyMountainColorStops = [\r\n      ColorStop(color: snowyMountain[<span style=\"color: #005cc5;\">0<\/span>], position: <span style=\"color: #005cc5;\">0<\/span>),\r\n      ColorStop(color: snowyMountain [<span style=\"color: #005cc5;\">1<\/span>], position: <span style=\"color: #005cc5;\">0.1<\/span>),\r\n      ColorStop(color: snowyMountain [<span style=\"color: #005cc5;\">2<\/span>], position: <span style=\"color: #005cc5;\">0.2<\/span>),\r\n      ColorStop(color: snowyMountain [<span style=\"color: #005cc5;\">3<\/span>], position: <span style=\"color: #005cc5;\">0.3<\/span>),\r\n      ColorStop(color: snowyMountain [<span style=\"color: #005cc5;\">4<\/span>], position: <span style=\"color: #005cc5;\">0.4<\/span>),\r\n    ];\r\n    \r\n<span style=\"color: #d73a49;\">final<\/span> colorStopColorRamp = ColorRamp.fromColorStops(\r\n      colorStops: snowyMountainColorStops,\r\n      size: <span style=\"color: #005cc5;\">256<\/span>,\r\n    );\r\n    \r\n\r\n<span style=\"color: #d73a49;\">var<\/span> stretchRenderer = StretchRenderer(\r\n      stretchParameters: minMaxStretchParams,\r\n      gammas: gammas,\r\n      estimateStatistics: estimateStatistics,\r\n      colorRamp: colorStopColorRamp,\r\n    );\r\n\r\nrasterLayer = RasterLayer.withRaster(raster)\r\n      ..renderer = stretchRenderer;\r\n\r\n map.operationalLayers.add(rasterLayer);\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<h2>Discrete data with enhanced Colormap renderer<\/h2>\n<p>Categorical datasets such as land cover, classifications, or masks require explicit value to color mapping.<\/p>\n<p>The enhanced Colormap renderer API now allows you to directly map data values with specific colors. This makes it easier to:<\/p>\n<ul>\n<li>Render discrete datasets correctly<\/li>\n<li>Maintain consistent styling across datasets<\/li>\n<li>Build apps where users can adjust category colors dynamically<\/li>\n<\/ul>\n<p>You can apply a colormap (via a colormap renderer) directly to a raster layer renderer property or to a field analysis created with a discrete field function in the new spatial analysis APIs.<\/p>\n<h3>New constructor for Colormap with values and colors<\/h3>\n<p>In the app below, I\u2019ve used a land cover dataset covering the Isle of Rum, Scotland, and rendered it with a <code>Colormap<\/code>, so that each value is mapped to a color (for this I\u2019ve chosen random colors from the \u201cflower field\u201d and \u201cmother earth\u201d color ramp from the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/visualization\/symbols-color-ramps\/esri-color-ramps\/)\">Javascript Maps SDK color ramp library<\/a>). This enhancement means that developers can now easily design apps that allow users to select a pixel value from the dataset and update its color on the fly, demonstrated in the app below.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2968160,"id":2968160,"title":"Colormap","filename":"Colormap.png","filesize":3056207,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/Colormap.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks\/colormap-2","alt":"Mobile screenshot showing a map rendered with multiple colors, and a legend showing what colors map to what land cover categories.","author":"10242","description":"","caption":"Land cover data covering the Isle of Rum is rendered via a ColormapRenderer, with each value mapped to a specific color. The color of each value can be remapped via a UI control.","name":"colormap-2","status":"inherit","uploaded_to":2967996,"date":"2026-05-28 12:26:24","modified":"2026-05-28 12:28:48","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":2401,"height":2475,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/Colormap-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/Colormap.png","medium-width":253,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/Colormap.png","medium_large-width":768,"medium_large-height":792,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/Colormap.png","large-width":1048,"large-height":1080,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/Colormap-1490x1536.png","1536x1536-width":1490,"1536x1536-height":1536,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/Colormap-1987x2048.png","2048x2048-width":1987,"2048x2048-height":2048,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/Colormap-451x465.png","card_image-width":451,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/Colormap-1048x1080.png","wide_image-width":1048,"wide_image-height":1080}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>To create a <code>Colormap<\/code> in code:<\/p>\n<ol>\n<li>First, create a map of integers (containing the pixel values for the classes in your data) and colors.<\/li>\n<li>Then, create a <code>Colormap<\/code> using the <code>Colormap.fromValuesAndColors<\/code> constructor with it.<\/li>\n<li>Then create a <code>ColormapRenderer<\/code> with the colormap and apply the colormap renderer directly to the raster layer.<\/li>\n<\/ol>\n<pre><code>\r\n<span style=\"color: #d73a49;\">final<\/span> colorMappings = {\r\n    <span style=\"color: #005cc5;\">1<\/span>: Color(<span style=\"color: #005cc5;\">0xFFEBDC78<\/span>),\r\n    <span style=\"color: #005cc5;\">2<\/span>: Color(<span style=\"color: #005cc5;\">0xFFB4DE63<\/span>),\r\n    <span style=\"color: #005cc5;\">3<\/span>: Color(<span style=\"color: #005cc5;\">0xFF98DB5D<\/span>),\r\n    <span style=\"color: #005cc5;\">4<\/span>: Color(<span style=\"color: #005cc5;\">0xFF7AD85A<\/span>),\r\n    <span style=\"color: #005cc5;\">5<\/span>: Color(<span style=\"color: #005cc5;\">0xFF5AD45A<\/span>),\r\n    <span style=\"color: #005cc5;\">6<\/span>: Color(<span style=\"color: #005cc5;\">0xFF30C78B<\/span>),\r\n    <span style=\"color: #005cc5;\">7<\/span>: Color(<span style=\"color: #005cc5;\">0xFF10A9BA<\/span>),\r\n    <span style=\"color: #005cc5;\">8<\/span>: Color(<span style=\"color: #005cc5;\">0xFF1181DF<\/span>),\r\n    <span style=\"color: #005cc5;\">9<\/span>: Color(<span style=\"color: #005cc5;\">0xFF1A5CFA<\/span>),\r\n    <span style=\"color: #005cc5;\">10<\/span>: Color(<span style=\"color: #005cc5;\">0xFF2E4AF4<\/span>),\r\n    <span style=\"color: #005cc5;\">11<\/span>: Color(<span style=\"color: #005cc5;\">0xFF5834D4<\/span>),\r\n    <span style=\"color: #005cc5;\">12<\/span>: Color(<span style=\"color: #005cc5;\">0xFF841BAC<\/span>),\r\n  };\r\n\r\n<span style=\"color: #d73a49;\">final<\/span> colormap = Colormap.fromValuesAndColors(colorMappings);\r\nrasterLayer.renderer = ColormapRenderer.withColormap(colormap);\r\nmap.operationalLayers.add(rasterLayer);\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<h2>Color ramps and color maps in the new spatial analysis APIs<\/h2>\n<p>These color ramp and color map enhancements also work seamlessly with the new spatial analysis APIs, introduced in 300.0 of <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/announcements\/whats-new-in-arcgis-maps-sdks-for-native-apps-300-0\">Native Maps SDKs<\/a>.<\/p>\n<p>There are two ways in which results from the analyses (such as map algebra or viewshed analysis results) can be visually presented:<\/p>\n<ol>\n<li>The first, by exporting the result as a raster in .tiff format, and then rendering that raster on the geoview via the raster layer renderer &#8211; the same approach as shown in the previous sections of this blog.<\/li>\n<li>The second is by rendering the results of the analyses through a <code>FieldAnalysis<\/code> in an <code>AnalysisOverlay<\/code>. Color ramps are designed for use with continuous field data in mind (e.g. elevation) whereas color maps are designed with discrete field data in mind (e.g. land cover).<\/li>\n<\/ol>\n<h3>Color ramp rendering of continuous data in an analysis overlay<\/h3>\n<p>This means, for example, that you could use the new spatial analysis APIs to carry out a viewshed analysis. Then, instead of displaying the results as a traditional visible\/not visible color block, you could render the areas visible to the observer as a surface preset color ramp. This approach allows the user to not only calculate areas visible from a viewpoint, but to also quickly visualize the topography of the surrounding area visible from their viewpoint. An example of this is shown in the app below, using an elevation dataset covering Iona, Scotland.<\/p>\n<p><em>Note: You can also display the results as a pair of colors that display visible and non-visible portions &#8211; you can see an example of this in the <a href=\"https:\/\/developers.arcgis.com\/flutter\/sample-code\/show-interactive-viewshed-with-analysis-overlay\/\">Show interactive viewshed with analysis overlay sample<\/a>. The example in this section of the blog is to illustrate the use of color ramps in an analysis overlay from an analysis result.<\/em><\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2968162,"id":2968162,"title":"SpatialAnalysisColorRamp","filename":"SpatialAnalysisColorRamp-scaled.png","filesize":1432951,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColorRamp-scaled.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks\/spatialanalysiscolorramp","alt":"Three mobile phone screenshots showing a map with areas colored in from green to orange.","author":"10242","description":"","caption":"Viewshed analysis calculated from a digital elevation model of Iona, Scotland. Areas visible to an observer are rendered using a preset color ramp type of \u201csurface\u201d applied via a stretch renderer to a field analysis. The UI control in the top left of each image shows the viewshed parameter constraint of field of view, heading, and maximum radius.","name":"spatialanalysiscolorramp","status":"inherit","uploaded_to":2967996,"date":"2026-05-28 12:29:28","modified":"2026-06-02 14:13:57","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":2560,"height":1744,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColorRamp-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColorRamp-scaled.png","medium-width":383,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColorRamp-scaled.png","medium_large-width":768,"medium_large-height":523,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColorRamp-scaled.png","large-width":1585,"large-height":1080,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColorRamp-1536x1046.png","1536x1536-width":1536,"1536x1536-height":1046,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColorRamp-2048x1395.png","2048x2048-width":2048,"2048x2048-height":1395,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColorRamp-683x465.png","card_image-width":683,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColorRamp-1586x1080.png","wide_image-width":1586,"wide_image-height":1080}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>To render the results of a viewshed analysis with a color ramp in code:<\/p>\n<ol>\n<li>First, create an <code>AnalysisOverlay<\/code> and add it to the map view\u2019s collection of analysis overlays.<\/li>\n<li>Then, create a <code>StretchRenderer<\/code> with <code>MinMaxStretchParameters<\/code> and a <code>PresetColorRampType<\/code>.<\/li>\n<li>Then create a new <code>FieldAnalysis.withContinuousFieldFunction<\/code> from the viewshed function.\n<ul>\n<li>The <code>ViewshedFunction<\/code> is responsible for calculating the result of a viewshed calculation from a given observer position \u2013 see the <a href=\"https:\/\/developers.arcgis.com\/flutter\/sample-code\/show-interactive-viewshed-with-analysis-overlay\/\">Show interactive viewshed with analysis overlay sample<\/a> for more details on viewshed and field analysis.<\/li>\n<li>The viewshed function at this point would return a continuous field containing values of either 0.0 for not visible, or 1.0 for visible. But since we want to visualize the viewshed result as a surface color ramp for areas that are visible, using map algebra, multiply that viewshed function by the original elevation surface values (stored in another continuous field function).<\/li>\n<\/ul>\n<\/li>\n<li>\u00a0Set the renderer to the FieldAnalysis renderer parameter.<\/li>\n<li>Add the analysis result to the analysis overlay&#8217;s list of analyses to display it on the map.<\/li>\n<\/ol>\n<pre><code>\r\n<span style=\"color: #d73a49;\">final<\/span> analysisOverlay = AnalysisOverlay();\r\nmapViewController.analysisOverlays.add(analysisOverlay);\r\n\r\n<span style=\"color: #d73a49;\">var<\/span> stretchRenderer = StretchRenderer(\r\n      stretchParameters: minMaxStretchParams,\r\n      gammas: gammas,\r\n      estimateStatistics: <span style=\"color: #d73a49;\">false<\/span>,\r\n      colorRamp: ColorRamp(type: PresetColorRampType.surface, size: <span style=\"color: #005cc5;\">256<\/span>),\r\n    );\r\n\r\n <span style=\"color: #d73a49;\">final<\/span> viewshedAnalysis = FieldAnalysis.withContinuousFieldFunction(\r\n      function: viewshedFunction.multiplyByOtherField(elevationContinuousFieldFunction),\r\n      renderer: stretchRenderer,\r\n    );\r\n\r\nanalysisOverlay.analysis.add(landcoverViewshedAnalysis);\r\n<\/code><\/pre>\n<h3>Color map rendering of discrete data in an analysis overlay<\/h3>\n<p>You can also render discrete data with a color map in a field analysis with the new spatial analysis APIs. In the example app shown below (again from Iona, Scotland), an observer wants to know what land cover categories they\u2019d be able to see from their vantage point. You can do the same viewshed calculation as before, but, instead of rendering the result via a field analysis created with a continuous field function to give a sense of the topography, you can render it in a field analysis created with a discrete field function to display the land cover classes visible using map algebra. To see map algebra operations in action, check out the <a href=\"https:\/\/developers.arcgis.com\/flutter\/sample-code\/apply-map-algebra\/\">Apply map algebra sample<\/a>.<\/p>\n<p>This is a particularly powerful use case for e.g. ecologists interested in surveying a particular habitat (such as a sky lark survey over heathland) or for educational purposes, such as geology students looking for a vantage point to sketch a geological unit of particular interest.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":2968163,"id":2968163,"title":"SpatialAnalysisColormap","filename":"SpatialAnalysisColormap-scaled.png","filesize":1489669,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColormap-scaled.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks\/spatialanalysiscolormap","alt":"Three mobile phone screenshots showing a map with color map and legend.","author":"10242","description":"","caption":"Viewshed analysis on Iona, Scotland, with visible areas rendered by land cover class. Left: all land cover classification categories visible from observer. Middle: only coastal and grasslands categories visible. Right: Only bogs, heathland, mires and built up areas that are visible from same vantage point.","name":"spatialanalysiscolormap","status":"inherit","uploaded_to":2967996,"date":"2026-05-28 12:31:36","modified":"2026-06-02 14:14:47","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":2560,"height":1782,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColormap-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColormap-scaled.png","medium-width":375,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColormap-scaled.png","medium_large-width":768,"medium_large-height":535,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColormap-scaled.png","large-width":1552,"large-height":1080,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColormap-1536x1069.png","1536x1536-width":1536,"1536x1536-height":1069,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColormap-2048x1425.png","2048x2048-width":2048,"2048x2048-height":1425,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColormap-668x465.png","card_image-width":668,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/SpatialAnalysisColormap-1552x1080.png","wide_image-width":1552,"wide_image-height":1080}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>To use a <code>ColormapRenderer<\/code> in an analysis overlay in code:<\/p>\n<ol>\n<li>First, create a map of integers and colors (as described earlier in this blog) and use it to create a <code>Colormap.fromValuesAndColors<\/code>.and<\/li>\n<li>Then create a <code>ColormapRenderer<\/code> from the color map.<\/li>\n<li>Then, in the\u00a0 <code>FieldAnalysis.withDiscreteFieldFunction<\/code> constructor, set the viewshed function to the function parameter, and the color map renderer to the field analysis\u2019s renderer property.<\/li>\n<li>Add the analysis result to the analysis overlay&#8217;s list of analyses to display it on the map.<\/li>\n<\/ol>\n<pre><code>\r\n<span style=\"color: #d73a49;\">final<\/span> analysisOverlay = AnalysisOverlay();\r\nmapViewController.analysisOverlays.add(analysisOverlay);\r\n\r\n<span style=\"color: #d73a49;\">final<\/span> colormap = Colormap.fromValuesAndColors(\r\n      colormappings,\r\n    );\r\n    \r\n\r\n<span style=\"color: #d73a49;\">final<\/span> landCoverColormapRenderer = ColormapRenderer.withColormap(\r\n      colormap,\r\n    );\r\n    \r\n<span style=\"color: #d73a49;\">final<\/span> landcoverViewshedAnalysis = FieldAnalysis.withDiscreteFieldFunction(\r\n      function: landCoverViewshedFunction,\r\n      renderer: landCoverColormapRenderer,\r\n    );\r\n\r\nanalysisOverlay.analysis.add(landcoverViewshedAnalysis);\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"content","content":"<h2><strong>In summary<\/strong><\/h2>\n<p>Whether you rely on familiar preset ramps from across the ArcGIS system, choose accessible defaults, or design your own custom color ramps, our goal is the same: giving you control to provide the best mapping experiences to visualize your data.<\/p>\n<p>With 300.0, Native Maps SDKs make it easier to:<\/p>\n<ul>\n<li>Quickly visualize raster and analysis data<\/li>\n<li>Maintain visual consistency across the broader Esri system<\/li>\n<li>Customize rendering when your data or audience requires it<\/li>\n<\/ul>\n<h3>Now it&#8217;s your turn!<\/h3>\n<p>Now that you\u2019ve learned how to use color ramps and color maps in Native Maps SDKs, the possibilities for visualizing your data are endless and we can&#8217;t wait to see what you build! Here are some links to help get you started.<\/p>\n<p>The color ramp library available on the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/visualization\/symbols-color-ramps\/esri-color-ramps\/\">Javascript Maps SDK developer documentation<\/a> is a fantastic resource for browsing color ramps and copying their hexadecimal or RGBA values into your own code. You can read more about the color ramp library and how to use it in the <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/better-colors-for-better-mapping\">Better colors for better mapping ArcGIS Blog<\/a> post. There are hundreds of color ramps there for developers to improve their mapping experience. I\u2019ve also found <a href=\"https:\/\/colorbrewer2.org\/#type=sequential&amp;scheme=BuGn&amp;n=3\">ColorBrewer<\/a> to be a useful resource for picking a color scheme appropriate for my data.<\/p>\n<p>To learn more about the new spatial analysis capabilities, and the raster API, check out our <a href=\"https:\/\/developers.arcgis.com\/flutter\/spatial-analysis\/analysis-options\/#spatial-analysis-apis\">new spatial analysis documentation<\/a> along with the <a href=\"https:\/\/developers.arcgis.com\/flutter\/layers\/add-raster-data\/\">raster data<\/a> guide. To see more color ramps and color maps in action for the spatial analysis APIs, check out the <a href=\"https:\/\/developers.arcgis.com\/flutter\/sample-code\/show-interactive-viewshed-with-analysis-overlay\/\">Show interactive viewshed with analysis overlay<\/a> sample and the <a href=\"https:\/\/developers.arcgis.com\/flutter\/sample-code\/apply-map-algebra\/\">Apply map algebra<\/a> sample.<\/p>\n<h3>We&#8217;d love your feedback!<\/h3>\n<p>Is there a preset color ramp type that you\u2019d love to see? How will you use the new Colormap and ColorRamp functionality now available in the raster and new spatial analysis APIs in your apps? Let us know on <a href=\"https:\/\/community.esri.com\/t5\/arcgis-maps-sdks-for-native-apps\/ct-p\/arcgis-runtime-sdks\">Esri Community<\/a> ! We love hearing from you and your feedback helps us continue to improve our SDKs for you.<\/p>\n<p>We hope you love creating apps with the new color ramps and color map rendering options, and we look forward to seeing what you build.<\/p>\n<h6>Data sources used in this blog:<\/h6>\n<h6><em>Brun, P., Zimmerman, N.E., Hari, C., Pellissier, L., Karger, D.N. (2022) Global climate-related predictors at kilometre resolution for the past and future Earth System Science Data. 14, 5573-5603 https:\/\/doi.org\/10.5194\/essd-14-5573-2022<\/em><\/h6>\n<h6><em>Brun, P., Zimmermann, N.E., Hari, C., Pellissier, L., Karger, D.N. (2022). CHELSA-BIOCLIM+ A novel set of global climate-related predictors at kilometre-resolution. EnviDat. <a href=\"https:\/\/doi.org\/10.16904\/envidat.332\">https:\/\/doi.org\/10.16904\/envidat.332<\/a><\/em><\/h6>\n<h6><em>Climate Hazards Center Infrared Precipitation with Stations version 3 (CHIRPS3) Data Repository:\u00a0<a href=\"https:\/\/doi.org\/10.15780\/G2JQ0P\">https:\/\/doi.org\/10.15780\/G2JQ0P\u00a0<\/a>(2025). Data was accessed on [May 2026].\u00a0<\/em><\/h6>\n<h6><em>GEBCO Bathymetric Compilation Group 2026 (2026). The GEBCO_2026 Grid &#8211; a continuous terrain model for oceans and land at 15 arc-second intervals. doi:10.5285\/4f68d5c7-45eb-f999-e063-7086abc036fa\u00a0<\/em><\/h6>\n"}],"related_articles":[{"ID":2963262,"post_author":"3811","post_date":"2026-04-21 06:37:47","post_date_gmt":"2026-04-21 13:37:47","post_content":"","post_title":"What\u2019s new in ArcGIS Maps SDKs for Native Apps 300.0","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"whats-new-in-arcgis-maps-sdks-for-native-apps-300-0","to_ping":"","pinged":"","post_modified":"2026-06-02 10:41:56","post_modified_gmt":"2026-06-02 17:41:56","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2963262","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":2861932,"post_author":"10242","post_date":"2025-06-30 04:34:40","post_date_gmt":"2025-06-30 11:34:40","post_content":"","post_title":"How to integrate satellite imagery in mobile app development with Flutter Maps SDK","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"how-to-integrate-satellite-imagery-in-mobile-app-development-with-flutter-maps-sdk","to_ping":"","pinged":"","post_modified":"2025-07-01 02:51:31","post_modified_gmt":"2025-07-01 09:51:31","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=2861932","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":694072,"post_author":"6561","post_date":"2020-01-14 08:30:12","post_date_gmt":"2020-01-14 16:30:12","post_content":"","post_title":"Better colors for better mapping","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"better-colors-for-better-mapping","to_ping":"","pinged":"","post_modified":"2024-06-20 12:16:24","post_modified_gmt":"2024-06-20 19:16:24","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=694072","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"}],"show_article_image":true,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/Banner.png","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/Banner-1.png"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Render data with new color ramps &amp; color maps in Native Maps SDKs<\/title>\n<meta name=\"description\" content=\"Learn how to visualize raster and spatial analysis data using new color ramp and color map features in Native Maps SDKs.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Render data with new color ramps and color maps in Native Maps SDKs\" \/>\n<meta property=\"og:description\" content=\"Learn how to visualize raster and spatial analysis data using new color ramp and color map features in Native Maps SDKs.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-06-02T15:59:49+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"13 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks\"},\"author\":{\"name\":\"Rachael Ellen\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d12aeaaab25c748cdf66a320bf0e72cd\"},\"headline\":\"Render data with new color ramps and color maps in Native Maps SDKs\",\"datePublished\":\"2026-06-02T12:00:30+00:00\",\"dateModified\":\"2026-06-02T15:59:49+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks\"},\"wordCount\":13,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"accessibility\",\"ArcGIS Maps SDKs for Native Apps\",\"color maps\",\"color ramps\",\"spatial analysis\"],\"articleSection\":[\"Developers\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks\",\"name\":\"Render data with new color ramps & color maps in Native Maps SDKs\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2026-06-02T12:00:30+00:00\",\"dateModified\":\"2026-06-02T15:59:49+00:00\",\"description\":\"Learn how to visualize raster and spatial analysis data using new color ramp and color map features in Native Maps SDKs.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Render data with new color ramps and color maps in Native Maps SDKs\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d12aeaaab25c748cdf66a320bf0e72cd\",\"name\":\"Rachael Ellen\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/01\/LinkedIn_Photo-465x465.jpeg\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/01\/LinkedIn_Photo-465x465.jpeg\",\"caption\":\"Rachael Ellen\"},\"description\":\"Rachael is a senior product engineer in the ArcGIS Maps SDKs for Native Apps team, working on the high performance spatial analysis APIs. Following an academic career in geology, she switched careers by learning to code and now enjoys building apps with Native Maps SDKs. She loves sharing code examples, fun geospatial development workflows and the latest product updates with developers via blogs and code.\",\"sameAs\":[\"https:\/\/dev.to\/rachaele\/\",\"https:\/\/www.linkedin.com\/in\/rachael-ellen-8a852729\/\"],\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/rellen\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Render data with new color ramps & color maps in Native Maps SDKs","description":"Learn how to visualize raster and spatial analysis data using new color ramp and color map features in Native Maps SDKs.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks","og_locale":"en_US","og_type":"article","og_title":"Render data with new color ramps and color maps in Native Maps SDKs","og_description":"Learn how to visualize raster and spatial analysis data using new color ramp and color map features in Native Maps SDKs.","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2026-06-02T15:59:49+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","twitter_misc":{"Est. reading time":"13 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks"},"author":{"name":"Rachael Ellen","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d12aeaaab25c748cdf66a320bf0e72cd"},"headline":"Render data with new color ramps and color maps in Native Maps SDKs","datePublished":"2026-06-02T12:00:30+00:00","dateModified":"2026-06-02T15:59:49+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks"},"wordCount":13,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["accessibility","ArcGIS Maps SDKs for Native Apps","color maps","color ramps","spatial analysis"],"articleSection":["Developers"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks","name":"Render data with new color ramps & color maps in Native Maps SDKs","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2026-06-02T12:00:30+00:00","dateModified":"2026-06-02T15:59:49+00:00","description":"Learn how to visualize raster and spatial analysis data using new color ramp and color map features in Native Maps SDKs.","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/developers\/developers\/new-color-ramps-color-maps-native-maps-sdks#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Render data with new color ramps and color maps in Native Maps SDKs"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d12aeaaab25c748cdf66a320bf0e72cd","name":"Rachael Ellen","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/01\/LinkedIn_Photo-465x465.jpeg","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2024\/01\/LinkedIn_Photo-465x465.jpeg","caption":"Rachael Ellen"},"description":"Rachael is a senior product engineer in the ArcGIS Maps SDKs for Native Apps team, working on the high performance spatial analysis APIs. Following an academic career in geology, she switched careers by learning to code and now enjoys building apps with Native Maps SDKs. She loves sharing code examples, fun geospatial development workflows and the latest product updates with developers via blogs and code.","sameAs":["https:\/\/dev.to\/rachaele\/","https:\/\/www.linkedin.com\/in\/rachael-ellen-8a852729\/"],"url":"https:\/\/www.esri.com\/arcgis-blog\/author\/rellen"}]}},"text_date":"June 2, 2026","author_name":"Rachael Ellen","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/rellen","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2026\/05\/Banner-1.png","primary_product":"Developers","tag_data":[{"term_id":28911,"name":"accessibility","slug":"accessibility","term_group":0,"term_taxonomy_id":28911,"taxonomy":"post_tag","description":"","parent":0,"count":74,"filter":"raw"},{"term_id":768202,"name":"ArcGIS Maps SDKs for Native Apps","slug":"arcgis-maps-sdks-for-native-apps","term_group":0,"term_taxonomy_id":768202,"taxonomy":"post_tag","description":"","parent":0,"count":32,"filter":"raw"},{"term_id":781125,"name":"color maps","slug":"color-maps","term_group":0,"term_taxonomy_id":781125,"taxonomy":"post_tag","description":"","parent":0,"count":1,"filter":"raw"},{"term_id":375682,"name":"color ramps","slug":"color-ramps","term_group":0,"term_taxonomy_id":375682,"taxonomy":"post_tag","description":"","parent":0,"count":2,"filter":"raw"},{"term_id":25631,"name":"spatial analysis","slug":"spatial-analysis","term_group":0,"term_taxonomy_id":25631,"taxonomy":"post_tag","description":"","parent":0,"count":61,"filter":"raw"}],"category_data":[{"term_id":738191,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":738191,"taxonomy":"category","description":"","parent":0,"count":438,"filter":"raw"}],"product_data":[{"term_id":769142,"name":"ArcGIS Maps SDK for .NET","slug":"sdk-net","term_group":0,"term_taxonomy_id":769142,"taxonomy":"product","description":"","parent":36601,"count":44,"filter":"raw"},{"term_id":776202,"name":"ArcGIS Maps SDK for Flutter","slug":"sdk-flutter","term_group":0,"term_taxonomy_id":776202,"taxonomy":"product","description":"","parent":36601,"count":23,"filter":"raw"},{"term_id":768902,"name":"ArcGIS Maps SDK for Kotlin","slug":"sdk-kotlin","term_group":0,"term_taxonomy_id":768902,"taxonomy":"product","description":"","parent":36601,"count":39,"filter":"raw"},{"term_id":769152,"name":"ArcGIS Maps SDK for Qt","slug":"sdk-qt","term_group":0,"term_taxonomy_id":769152,"taxonomy":"product","description":"","parent":36601,"count":43,"filter":"raw"},{"term_id":768912,"name":"ArcGIS Maps SDK for Swift","slug":"sdk-swift","term_group":0,"term_taxonomy_id":768912,"taxonomy":"product","description":"","parent":36601,"count":38,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":773,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=developers","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/2967996","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/10242"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=2967996"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/2967996\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=2967996"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=2967996"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=2967996"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=2967996"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=2967996"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}