<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Changing feature styling based on outfields in ArcGIS JavaScript Maps SDK Questions</title>
    <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/changing-feature-styling-based-on-outfields/m-p/1048885#M72637</link>
    <description>&lt;P&gt;Many thanks! I hadn't come across this before, but it's exactly what I needed.&lt;/P&gt;</description>
    <pubDate>Mon, 19 Apr 2021 20:26:31 GMT</pubDate>
    <dc:creator>AngusHunt</dc:creator>
    <dc:date>2021-04-19T20:26:31Z</dc:date>
    <item>
      <title>Changing feature styling based on outfields</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/changing-feature-styling-based-on-outfields/m-p/1048470#M72615</link>
      <description>&lt;DIV class="votecell post-layout--left"&gt;&lt;DIV class="js-voting-container grid jc-center fd-column ai-stretch gs4 fc-black-200"&gt;&amp;nbsp;&lt;/DIV&gt;&lt;/DIV&gt;&lt;DIV class="postcell post-layout--right"&gt;&lt;DIV class="s-prose js-post-body"&gt;&lt;P&gt;I'm currently trying to use the ArcGIS JS API to display a simple web map of land-use over time. The aim is to colour orange any polygons where their land-use has changed from 1996 to 2018 (ie: if (NAME_1996 != NAME_2018) then...). If the name has stayed the same then the polygons will be coloured blue.&lt;/P&gt;&lt;P&gt;The data is a queried geoJSON file from the Esri hosted content service.&lt;/P&gt;&lt;P&gt;I know that in Leaflet geoJSON data can be processed and styled on each feature before rendering. However, all I can find that is similar with ArcGIS JS is the UniqueValueRenderer, which only allows the testing of one field. I realise that this problem could be solved by pre-processing the data to add a HAS_CHANGED (true/false) column to the dataset, but this seems so simple that is should be able to be achieved on-the-fly.&lt;/P&gt;&lt;P&gt;&lt;A href="https://developers.arcgis.com/javascript/latest/api-reference/esri-renderers-UniqueValueRenderer.html" target="_blank" rel="nofollow noopener noreferrer"&gt;This page&lt;/A&gt; in the documentation explains the UnqiueValueRenderer.&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;Example code:&lt;/STRONG&gt;&lt;/P&gt;&lt;PRE&gt;&amp;lt;!DOCTYPE html&amp;gt;
&lt;SPAN class="xml"&gt;&lt;SPAN class="hljs-tag"&gt;&amp;lt;&lt;SPAN class="hljs-name"&gt;html&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class="hljs-tag"&gt;&amp;lt;&lt;SPAN class="hljs-name"&gt;head&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class="hljs-tag"&gt;&amp;lt;&lt;SPAN class="hljs-name"&gt;meta&lt;/SPAN&gt; &lt;SPAN class="hljs-attr"&gt;charset&lt;/SPAN&gt;=&lt;SPAN class="hljs-string"&gt;"utf-8"&lt;/SPAN&gt; /&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class="hljs-tag"&gt;&amp;lt;&lt;SPAN class="hljs-name"&gt;meta&lt;/SPAN&gt;
      &lt;SPAN class="hljs-attr"&gt;name&lt;/SPAN&gt;=&lt;SPAN class="hljs-string"&gt;"viewport"&lt;/SPAN&gt;
      &lt;SPAN class="hljs-attr"&gt;content&lt;/SPAN&gt;=&lt;SPAN class="hljs-string"&gt;"initial-scale=1,maximum-scale=1,user-scalable=no"&lt;/SPAN&gt;
    /&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class="hljs-tag"&gt;&amp;lt;&lt;SPAN class="hljs-name"&gt;title&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;Load a basic WebMap - 4.12&lt;SPAN class="hljs-tag"&gt;&amp;lt;/&lt;SPAN class="hljs-name"&gt;title&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;

    &lt;SPAN class="hljs-comment"&gt;&amp;lt;!-- jquery --&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class="hljs-tag"&gt;&amp;lt;&lt;SPAN class="hljs-name"&gt;script&lt;/SPAN&gt; &lt;SPAN class="hljs-attr"&gt;src&lt;/SPAN&gt;=&lt;SPAN class="hljs-string"&gt;"https://code.jquery.com/jquery-3.6.0.js"&lt;/SPAN&gt; &lt;SPAN class="hljs-attr"&gt;integrity&lt;/SPAN&gt;=&lt;SPAN class="hljs-string"&gt;"sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk="&lt;/SPAN&gt; &lt;SPAN class="hljs-attr"&gt;crossorigin&lt;/SPAN&gt;=&lt;SPAN class="hljs-string"&gt;"anonymous"&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="hljs-tag"&gt;&amp;lt;/&lt;SPAN class="hljs-name"&gt;script&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;

    &lt;SPAN class="hljs-tag"&gt;&amp;lt;&lt;SPAN class="hljs-name"&gt;style&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="css"&gt;      &lt;SPAN class="hljs-selector-tag"&gt;html&lt;/SPAN&gt;,
      &lt;SPAN class="hljs-selector-tag"&gt;body&lt;/SPAN&gt;,
      &lt;SPAN class="hljs-selector-id"&gt;#viewDiv&lt;/SPAN&gt; {
        &lt;SPAN class="hljs-attribute"&gt;padding&lt;/SPAN&gt;: &lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;;
        &lt;SPAN class="hljs-attribute"&gt;margin&lt;/SPAN&gt;: &lt;SPAN class="hljs-number"&gt;0&lt;/SPAN&gt;;
        &lt;SPAN class="hljs-attribute"&gt;height&lt;/SPAN&gt;: &lt;SPAN class="hljs-number"&gt;100%&lt;/SPAN&gt;;
        &lt;SPAN class="hljs-attribute"&gt;width&lt;/SPAN&gt;: &lt;SPAN class="hljs-number"&gt;100%&lt;/SPAN&gt;;
      }
    &lt;/SPAN&gt;&lt;SPAN class="hljs-tag"&gt;&amp;lt;/&lt;SPAN class="hljs-name"&gt;style&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class="hljs-tag"&gt;&amp;lt;&lt;SPAN class="hljs-name"&gt;link&lt;/SPAN&gt;
      &lt;SPAN class="hljs-attr"&gt;rel&lt;/SPAN&gt;=&lt;SPAN class="hljs-string"&gt;"stylesheet"&lt;/SPAN&gt;
      &lt;SPAN class="hljs-attr"&gt;href&lt;/SPAN&gt;=&lt;SPAN class="hljs-string"&gt;"https://js.arcgis.com/4.12/esri/themes/light/main.css"&lt;/SPAN&gt;
    /&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class="hljs-tag"&gt;&amp;lt;&lt;SPAN class="hljs-name"&gt;script&lt;/SPAN&gt; &lt;SPAN class="hljs-attr"&gt;src&lt;/SPAN&gt;=&lt;SPAN class="hljs-string"&gt;"https://js.arcgis.com/4.12/"&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="hljs-tag"&gt;&amp;lt;/&lt;SPAN class="hljs-name"&gt;script&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class="hljs-tag"&gt;&amp;lt;&lt;SPAN class="hljs-name"&gt;script&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="javascript"&gt;        &lt;SPAN class="hljs-built_in"&gt;require&lt;/SPAN&gt;([
        &lt;SPAN class="hljs-string"&gt;"esri/Map"&lt;/SPAN&gt;,
        &lt;SPAN class="hljs-string"&gt;"esri/views/MapView"&lt;/SPAN&gt;,
        &lt;SPAN class="hljs-string"&gt;"esri/layers/TileLayer"&lt;/SPAN&gt;,
        &lt;SPAN class="hljs-string"&gt;"esri/layers/FeatureLayer"&lt;/SPAN&gt;,
        &lt;SPAN class="hljs-string"&gt;"esri/renderers/SimpleRenderer"&lt;/SPAN&gt;,
        &lt;SPAN class="hljs-string"&gt;"esri/symbols/SimpleFillSymbol"&lt;/SPAN&gt;,
        &lt;SPAN class="hljs-string"&gt;"esri/symbols/SimpleLineSymbol"&lt;/SPAN&gt;,
        &lt;SPAN class="hljs-string"&gt;"esri/config"&lt;/SPAN&gt;
        ], &lt;SPAN class="hljs-function"&gt;&lt;SPAN class="hljs-keyword"&gt;function&lt;/SPAN&gt;(&lt;SPAN class="hljs-params"&gt;&lt;SPAN class="hljs-built_in"&gt;Map&lt;/SPAN&gt;, MapView, TileLayer, FeatureLayer, SimpleRenderer, SimpleFillSymbol, SimpleLineSymbol, Query, esriConfig&lt;/SPAN&gt;) &lt;/SPAN&gt;{

        esriConfig.apiKey = KEY_GOES_HERE

        &lt;SPAN class="hljs-keyword"&gt;const&lt;/SPAN&gt; map = &lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; &lt;SPAN class="hljs-built_in"&gt;Map&lt;/SPAN&gt;({
            &lt;SPAN class="hljs-attr"&gt;basemap&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"satellite"&lt;/SPAN&gt; &lt;SPAN class="hljs-comment"&gt;// Basemap layer service&lt;/SPAN&gt;
        });

        &lt;SPAN class="hljs-function"&gt;&lt;SPAN class="hljs-keyword"&gt;function&lt;/SPAN&gt; &lt;SPAN class="hljs-title"&gt;returnRenderer&lt;/SPAN&gt;(&lt;SPAN class="hljs-params"&gt;name_1996, name_2018&lt;/SPAN&gt;) &lt;/SPAN&gt;{
            &lt;SPAN class="hljs-keyword"&gt;if&lt;/SPAN&gt; (name_1996 != name_2018) {
                renderer = {
                    &lt;SPAN class="hljs-attr"&gt;type&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"simple"&lt;/SPAN&gt;,
                    &lt;SPAN class="hljs-attr"&gt;symbol&lt;/SPAN&gt;: {
                        &lt;SPAN class="hljs-attr"&gt;type&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"simple-fill"&lt;/SPAN&gt;,
                        &lt;SPAN class="hljs-attr"&gt;size&lt;/SPAN&gt;: &lt;SPAN class="hljs-number"&gt;6&lt;/SPAN&gt;,
                        &lt;SPAN class="hljs-attr"&gt;color&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"orange"&lt;/SPAN&gt;,
                        &lt;SPAN class="hljs-attr"&gt;outline&lt;/SPAN&gt;: {
                        &lt;SPAN class="hljs-attr"&gt;width&lt;/SPAN&gt;: &lt;SPAN class="hljs-number"&gt;0.5&lt;/SPAN&gt;,
                        &lt;SPAN class="hljs-attr"&gt;color&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"white"&lt;/SPAN&gt;
                        }
                    }
                };
            } &lt;SPAN class="hljs-keyword"&gt;else&lt;/SPAN&gt; {
                renderer = {
                    &lt;SPAN class="hljs-attr"&gt;type&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"simple"&lt;/SPAN&gt;,
                    &lt;SPAN class="hljs-attr"&gt;symbol&lt;/SPAN&gt;: {
                        &lt;SPAN class="hljs-attr"&gt;type&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"simple-fill"&lt;/SPAN&gt;,
                        &lt;SPAN class="hljs-attr"&gt;size&lt;/SPAN&gt;: &lt;SPAN class="hljs-number"&gt;6&lt;/SPAN&gt;,
                        &lt;SPAN class="hljs-attr"&gt;color&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"blue"&lt;/SPAN&gt;,
                        &lt;SPAN class="hljs-attr"&gt;outline&lt;/SPAN&gt;: {
                        &lt;SPAN class="hljs-attr"&gt;width&lt;/SPAN&gt;: &lt;SPAN class="hljs-number"&gt;0.5&lt;/SPAN&gt;,
                        &lt;SPAN class="hljs-attr"&gt;color&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"white"&lt;/SPAN&gt;
                        }
                    }
                };
            }
            &lt;SPAN class="hljs-keyword"&gt;return&lt;/SPAN&gt; renderer
        }

        &lt;SPAN class="hljs-keyword"&gt;var&lt;/SPAN&gt; view = &lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; MapView({
            &lt;SPAN class="hljs-attr"&gt;container&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"viewDiv"&lt;/SPAN&gt;,
            &lt;SPAN class="hljs-attr"&gt;map&lt;/SPAN&gt;: map,
            &lt;SPAN class="hljs-attr"&gt;center&lt;/SPAN&gt;: [&lt;SPAN class="hljs-number"&gt;176.13567895574866&lt;/SPAN&gt;, -&lt;SPAN class="hljs-number"&gt;37.71157953908512&lt;/SPAN&gt;],
            &lt;SPAN class="hljs-attr"&gt;zoom&lt;/SPAN&gt;: &lt;SPAN class="hljs-number"&gt;15&lt;/SPAN&gt;
        });

        
        popup_landcover = {
            &lt;SPAN class="hljs-string"&gt;"title"&lt;/SPAN&gt;:&lt;SPAN class="hljs-string"&gt;"{NAME_2018} (2018)"&lt;/SPAN&gt;,
            &lt;SPAN class="hljs-string"&gt;"content"&lt;/SPAN&gt;:&lt;SPAN class="hljs-string"&gt;"Landcover type in 1996: {NAME_1996}&amp;lt;br&amp;gt;Landcover type in 2018: {NAME_2018}"&lt;/SPAN&gt;
        }
        
        &lt;SPAN class="hljs-keyword"&gt;var&lt;/SPAN&gt; layer_landcover = &lt;SPAN class="hljs-keyword"&gt;new&lt;/SPAN&gt; FeatureLayer({
            &lt;SPAN class="hljs-attr"&gt;url&lt;/SPAN&gt;: &lt;SPAN class="hljs-string"&gt;"https://services.arcgis.com/PyaTLAnbSEVNXOpB/arcgis/rest/services/iris_Landcover_NZ_v5/FeatureServer"&lt;/SPAN&gt;,
            &lt;SPAN class="hljs-attr"&gt;outFields&lt;/SPAN&gt;: [&lt;SPAN class="hljs-string"&gt;"NAME_2018"&lt;/SPAN&gt;, &lt;SPAN class="hljs-string"&gt;"NAME_1996"&lt;/SPAN&gt;],
            &lt;SPAN class="hljs-attr"&gt;popupTemplate&lt;/SPAN&gt;: popup_landcover,
            &lt;SPAN class="hljs-attr"&gt;renderer&lt;/SPAN&gt;: returnRenderer( ???? )
        })
        
        map.add(layer_landcover);
    &lt;/SPAN&gt;&lt;SPAN class="hljs-tag"&gt;&amp;lt;/&lt;SPAN class="hljs-name"&gt;script&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class="hljs-tag"&gt;&amp;lt;/&lt;SPAN class="hljs-name"&gt;head&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class="hljs-tag"&gt;&amp;lt;&lt;SPAN class="hljs-name"&gt;body&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
    &lt;SPAN class="hljs-tag"&gt;&amp;lt;&lt;SPAN class="hljs-name"&gt;div&lt;/SPAN&gt; &lt;SPAN class="hljs-attr"&gt;id&lt;/SPAN&gt;=&lt;SPAN class="hljs-string"&gt;"viewDiv"&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;&lt;SPAN class="hljs-tag"&gt;&amp;lt;/&lt;SPAN class="hljs-name"&gt;div&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
  &lt;SPAN class="hljs-tag"&gt;&amp;lt;/&lt;SPAN class="hljs-name"&gt;body&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
&lt;SPAN class="hljs-tag"&gt;&amp;lt;/&lt;SPAN class="hljs-name"&gt;html&lt;/SPAN&gt;&amp;gt;&lt;/SPAN&gt;
&lt;/SPAN&gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;</description>
      <pubDate>Sat, 17 Apr 2021 21:25:33 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/changing-feature-styling-based-on-outfields/m-p/1048470#M72615</guid>
      <dc:creator>AngusHunt</dc:creator>
      <dc:date>2021-04-17T21:25:33Z</dc:date>
    </item>
    <item>
      <title>Re: Changing feature styling based on outfields</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/changing-feature-styling-based-on-outfields/m-p/1048751#M72629</link>
      <description>&lt;P&gt;This is right up Arcades alley. Here is a sample that does something similar.&lt;/P&gt;&lt;P&gt;&lt;A href="https://developers.arcgis.com/javascript/latest/sample-code/visualization-arcade/" target="_blank"&gt;https://developers.arcgis.com/javascript/latest/sample-code/visualization-arcade/&lt;/A&gt;&lt;/P&gt;&lt;P&gt;Some doc on Arcade for visualization.&lt;/P&gt;&lt;P&gt;&lt;A href="https://developers.arcgis.com/javascript/latest/arcade/#visualization" target="_blank"&gt;https://developers.arcgis.com/javascript/latest/arcade/#visualization&lt;/A&gt;&lt;/P&gt;&lt;P&gt;It will allow you do some field calcs and return a result that can be used by your renderer to determine how to visualize it.&lt;/P&gt;</description>
      <pubDate>Mon, 19 Apr 2021 15:34:47 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/changing-feature-styling-based-on-outfields/m-p/1048751#M72629</guid>
      <dc:creator>ReneRubalcava</dc:creator>
      <dc:date>2021-04-19T15:34:47Z</dc:date>
    </item>
    <item>
      <title>Re: Changing feature styling based on outfields</title>
      <link>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/changing-feature-styling-based-on-outfields/m-p/1048885#M72637</link>
      <description>&lt;P&gt;Many thanks! I hadn't come across this before, but it's exactly what I needed.&lt;/P&gt;</description>
      <pubDate>Mon, 19 Apr 2021 20:26:31 GMT</pubDate>
      <guid>https://community.esri.com/t5/arcgis-javascript-maps-sdk-questions/changing-feature-styling-based-on-outfields/m-p/1048885#M72637</guid>
      <dc:creator>AngusHunt</dc:creator>
      <dc:date>2021-04-19T20:26:31Z</dc:date>
    </item>
  </channel>
</rss>

