{"id":922831,"date":"2020-07-09T13:00:29","date_gmt":"2020-07-09T20:00:29","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=922831"},"modified":"2020-07-10T09:45:42","modified_gmt":"2020-07-10T16:45:42","slug":"labels-now-supported-in-point-clustering","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering","title":{"rendered":"Labeling support added to point clustering"},"author":6561,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"open","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[22941],"tags":[26751,30111,24921,128002,667481],"industry":[],"product":[36831,36601],"class_list":["post-922831","blog","type-blog","status-publish","format-standard","hentry","category-mapping","tag-clustering","tag-data-visualization","tag-javascript","tag-labeling","tag-whats-new-june-2020","product-js-api-arcgis","product-developers"],"acf":{"short_description":"The ArcGIS API for JavaScript added support for labeling point clusters with the total count or other aggregate summary information.","flexible_content":[{"acf_fc_layout":"content","content":"<p>The <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/release-notes\/#clustering-updates\">ArcGIS API for JavaScript<\/a> (ArcGIS JS API) version 4.16 added support for labeling point clusters. This has been one of the most popular enhancement requests since clustering was released.<\/p>\n<p><a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-support-FeatureReductionCluster.html\">Clustering<\/a> is a method of merging nearby and overlapping features into a single symbol to reduce cluttered features in the view. The size of the cluster icon indicates the number of features in each cluster relative to other clusters. Adding a label can provide more precise context to the features represented by the cluster.<\/p>\n<p>For example, check out this example of earthquakes that occurred along the Aleutian Islands in Alaska over the last 30 days.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":928581,"id":928581,"title":"Screen Shot 2020-07-09 at 12.30.54 PM","filename":"Screen-Shot-2020-07-09-at-12.30.54-PM.png","filesize":27611,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.30.54-PM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\/screen-shot-2020-07-09-at-12-30-54-pm","alt":"Earthquakes clustered.","author":"6561","description":"","caption":"Earthquakes that occurred along the Aleutian Islands in June 2020. The points are clustered so you can easily see where more earthquakes occur.","name":"screen-shot-2020-07-09-at-12-30-54-pm","status":"inherit","uploaded_to":922831,"date":"2020-07-09 19:32:04","modified":"2020-12-30 23:02:38","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":1328,"height":426,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.30.54-PM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.30.54-PM.png","medium-width":464,"medium-height":149,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.30.54-PM.png","medium_large-width":768,"medium_large-height":246,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.30.54-PM.png","large-width":1328,"large-height":426,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.30.54-PM.png","1536x1536-width":1328,"1536x1536-height":426,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.30.54-PM.png","2048x2048-width":1328,"2048x2048-height":426,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.30.54-PM-826x265.png","card_image-width":826,"card_image-height":265,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.30.54-PM.png","wide_image-width":1328,"wide_image-height":426}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/featurereduction-cluster\/index.html"},{"acf_fc_layout":"content","content":"<p>Clustering helps you immediately see where more points are densely located than others. When clustering is not enabled, it&#8217;s difficult to discern areas with a lot of overlapping points. <\/p>\n<p>Notice how the cluster of 1,000+ earthquakes in the previous image is not discernible when the same layer is not clustered.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":928591,"id":928591,"title":"Screen Shot 2020-07-09 at 12.31.38 PM","filename":"Screen-Shot-2020-07-09-at-12.31.38-PM.png","filesize":33220,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.31.38-PM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\/screen-shot-2020-07-09-at-12-31-38-pm","alt":"Earthquakes along the Aleutian Islands from the last 30 days. Not clustered.","author":"6561","description":"","caption":"Earthquakes that occurred along the Aleutian Islands in June 2020. In this visualization, each earthquake is represented with one point. When points aren't clustered, overlapping points make it difficult to see areas with a high number of earthquakes.","name":"screen-shot-2020-07-09-at-12-31-38-pm","status":"inherit","uploaded_to":922831,"date":"2020-07-09 19:32:07","modified":"2020-12-30 23:02:16","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":1258,"height":426,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.31.38-PM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.31.38-PM.png","medium-width":464,"medium-height":157,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.31.38-PM.png","medium_large-width":768,"medium_large-height":260,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.31.38-PM.png","large-width":1258,"large-height":426,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.31.38-PM.png","1536x1536-width":1258,"1536x1536-height":426,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.31.38-PM.png","2048x2048-width":1258,"2048x2048-height":426,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.31.38-PM-826x280.png","card_image-width":826,"card_image-height":280,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.31.38-PM.png","wide_image-width":1258,"wide_image-height":426}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/featurereduction-cluster\/index.html"},{"acf_fc_layout":"content","content":"<p>In fact the area where those 1,000+ earthquakes occurred is so small, most users will incorrectly assume there are fewer earthquakes in that location.<\/p>\n<h2>Show cluster counts<\/h2>\n<p>Labeling clusters is very similar to labeling individual features in a layer. Just like the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-FeatureLayer.html#labelingInfo\">FeatureLayer.labelingInfo<\/a> property of the FeatureLayer, <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-support-FeatureReductionCluster.html\">FeatureReductionCluster<\/a> now has a <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-support-FeatureReductionCluster.html#labelingInfo\">labelingInfo<\/a> property that allows you to configure cluster labels.<\/p>\n<p>That means you have full control over the label&#8217;s font, symbol, placement, and text. The following code will display cluster counts in the center of the cluster.<\/p>\n<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\"><span style=\"color: #333;font-weight: bold\">const<\/span> clusterConfig = {\r\n  type: <span style=\"color: #d14\">\"cluster\"<\/span>,\r\n  clusterRadius: <span style=\"color: #d14\">\"100px\"<\/span>,\r\n  <span style=\"color: #998;font-style: italic\">\/\/ increase the min cluster size<\/span>\r\n  <span style=\"color: #998;font-style: italic\">\/\/ to fit cluster labels<\/span>\r\n  clusterMinSize: <span style=\"color: #d14\">\"24px\"<\/span>,\r\n  clusterMaxSize: <span style=\"color: #d14\">\"60px\"<\/span>,\r\n  <span style=\"color: #998;font-style: italic\">\/\/ {cluster_count} is an aggregate field containing<\/span>\r\n  <span style=\"color: #998;font-style: italic\">\/\/ the number of features comprised by the cluster<\/span>\r\n  labelingInfo: [\r\n    {\r\n      <span style=\"color: #998;font-style: italic\">\/\/ allows for slight label overlap<\/span>\r\n      deconflictionStrategy: <span style=\"color: #d14\">\"none\"<\/span>,\r\n      labelExpressionInfo: {\r\n        <span style=\"color: #998;font-style: italic\">\/\/ Arcade expression formatting the cluster count<\/span>\r\n        expression: <span style=\"color: #d14\">\"Text($feature.cluster_count, '#,###')\"<\/span>\r\n      },\r\n      symbol: {\r\n        type: <span style=\"color: #d14\">\"text\"<\/span>,\r\n        color: <span style=\"color: #d14\">\"#004a5d\"<\/span>,\r\n        font: {\r\n          weight: <span style=\"color: #d14\">\"bold\"<\/span>,\r\n          family: <span style=\"color: #d14\">\"Noto Sans\"<\/span>,\r\n          size: <span style=\"color: #d14\">\"12px\"<\/span>\r\n        }\r\n      },\r\n      labelPlacement: <span style=\"color: #d14\">\"center-center\"<\/span>\r\n    }\r\n  ]\r\n};\r\n\r\nlayer.featureReduction = clusterConfig;\r\n<\/code><\/pre>\n<p>Here are a few properties introduced at version 4.16 of the ArcGIS JS API worth mentioning.<\/p>\n<p><a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-support-FeatureReductionCluster.html#clusterMinSize\">clusterMinSize<\/a>\/<a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-support-FeatureReductionCluster.html#clusterMaxSize\">clusterMaxSize<\/a>. Now you can configure the size of your smallest and largest clusters. All other cluster sizes interpolate linearly. The default size (12px) of the smallest cluster is a bit too small to house a readable label. Therefore, you may find yourself bumping this value up to something like 18-24px to get something that looks better with the label. Any time you change the <code>clusterMaxSize<\/code> you should also consider adjusting the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-support-FeatureReductionCluster.html#clusterRadius\">clusterRadius<\/a>.<\/p>\n<p><a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-support-LabelClass.html#deconflictionStrategy\">deconflictionStrategy<\/a> \u2013 Labeling in the ArcGIS JS API has always supported label deconfliction. Otherwise, most labels would be illegible. However, when it comes to displaying labels for clusters, it&#8217;s generally preferable to turn off label deconfliction so all cluster counts display. Now you have the option to disable label deconfliction. This looks better than removing labels when there&#8217;s only a little overlap.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":926501,"id":926501,"title":"Screen Shot 2020-07-08 at 5.23.28 PM","filename":"Screen-Shot-2020-07-08-at-5.23.28-PM.png","filesize":20417,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-5.23.28-PM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\/screen-shot-2020-07-08-at-5-23-28-pm","alt":"side by side view of clusters with conflicting and deconflicting labels","author":"6561","description":"","caption":"The image on the left shows how label deconfliction removes labels that overlap, or \"conflict\". This is typically desirable for layer labeling, but looks strange in cluster labels.","name":"screen-shot-2020-07-08-at-5-23-28-pm","status":"inherit","uploaded_to":922831,"date":"2020-07-09 00:23:38","modified":"2020-07-09 00:25:04","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":755,"height":277,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-5.23.28-PM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-5.23.28-PM.png","medium-width":464,"medium-height":170,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-5.23.28-PM.png","medium_large-width":755,"medium_large-height":277,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-5.23.28-PM.png","large-width":755,"large-height":277,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-5.23.28-PM.png","1536x1536-width":755,"1536x1536-height":277,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-5.23.28-PM.png","2048x2048-width":755,"2048x2048-height":277,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-5.23.28-PM.png","card_image-width":755,"card_image-height":277,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-5.23.28-PM.png","wide_image-width":755,"wide_image-height":277}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-5.23.28-PM.png"},{"acf_fc_layout":"content","content":"<h2>Advanced Labels<\/h2>\n<p>Given there is no limitation to the labelingInfo spec for clusters compared to layer labeling, you have the flexibility to style labels however you want and present summary information related to the renderer beyond the cluster count. You can add as many label classes as you want to create a rich experience for the end user.<\/p>\n<p>Check out the following <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/featurereduction-cluster-filter-slider\/index.html\">sample<\/a>, which adds six label classes to the FeatureReductionCluster labelingInfo. Note the various scale constraints, label placements, and symbol configurations for each.<\/p>\n<details>\n<summary>Expand to view the code for all six label classes<\/summary>\n<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\"><span style=\"color: #333;font-weight: bold\">const<\/span> clusterConfig = {\r\n  type: <span style=\"color: #d14\">\"cluster\"<\/span>,\r\n  <span style=\"color: #998;font-style: italic\">\/\/ larger radii look better with multiple label classes<\/span>\r\n  <span style=\"color: #998;font-style: italic\">\/\/ smaller radii looks better visually<\/span>\r\n  clusterRadius: <span style=\"color: #d14\">\"120px\"<\/span>,\r\n  labelsVisible: <span style=\"color: #333;font-weight: 500\">true<\/span>,\r\n  labelingInfo: [\r\n    {\r\n      symbol: {\r\n        type: <span style=\"color: #d14\">\"text\"<\/span>,\r\n        haloColor,\r\n        haloSize: <span style=\"color: #d14\">\"1px\"<\/span>,\r\n        color,\r\n        font: {\r\n          family: <span style=\"color: #d14\">\"Noto Sans\"<\/span>,\r\n          size: <span style=\"color: #d14\">\"11px\"<\/span>\r\n        },\r\n        xoffset: <span style=\"color: #008080\">0<\/span>,\r\n        yoffset: <span style=\"color: #d14\">\"-15px\"<\/span>\r\n      },\r\n      labelPlacement: <span style=\"color: #d14\">\"center-center\"<\/span>,\r\n      labelExpressionInfo: {\r\n        expression: <span style=\"color: #d14\">\"Text($feature.cluster_count, '#,### plants')\"<\/span>\r\n      },\r\n      where: <span style=\"color: #d14\">`cluster_avg_capacity_mw &gt; <span style=\"color: #333;font-weight: normal\">${clusterLabelThreshold}<\/span>`<\/span>\r\n    },\r\n    {\r\n      symbol: {\r\n        type: <span style=\"color: #d14\">\"text\"<\/span>,\r\n        haloColor,\r\n        haloSize: <span style=\"color: #d14\">\"2px\"<\/span>,\r\n        color,\r\n        font: {\r\n          weight: <span style=\"color: #d14\">\"bold\"<\/span>,\r\n          family: <span style=\"color: #d14\">\"Noto Sans\"<\/span>,\r\n          size: <span style=\"color: #d14\">\"18px\"<\/span>\r\n        },\r\n        xoffset: <span style=\"color: #008080\">0<\/span>,\r\n        yoffset: <span style=\"color: #008080\">0<\/span>\r\n      },\r\n      labelPlacement: <span style=\"color: #d14\">\"center-center\"<\/span>,\r\n      labelExpressionInfo: {\r\n        expression: <span style=\"color: #d14\">\"$feature.cluster_type_fuel1\"<\/span>\r\n      },\r\n      where: <span style=\"color: #d14\">`cluster_avg_capacity_mw &gt; <span style=\"color: #333;font-weight: normal\">${clusterLabelThreshold}<\/span>`<\/span>\r\n    },\r\n    {\r\n      symbol: {\r\n        type: <span style=\"color: #d14\">\"text\"<\/span>,\r\n        haloColor,\r\n        haloSize: <span style=\"color: #d14\">\"1px\"<\/span>,\r\n        color,\r\n        font: {\r\n          weight: <span style=\"color: #d14\">\"bold\"<\/span>,\r\n          family: <span style=\"color: #d14\">\"Noto Sans\"<\/span>,\r\n          size: <span style=\"color: #d14\">\"12px\"<\/span>\r\n        },\r\n        xoffset: <span style=\"color: #008080\">0<\/span>,\r\n        yoffset: <span style=\"color: #d14\">\"15px\"<\/span>\r\n      },\r\n      deconflictionStrategy: <span style=\"color: #d14\">\"none\"<\/span>,\r\n      labelPlacement: <span style=\"color: #d14\">\"center-center\"<\/span>,\r\n      labelExpressionInfo: {\r\n        expression: <span style=\"color: #d14\">`\r\n          var value = $feature.cluster_avg_capacity_mw;\r\n          var num = Count(Text(Round(value)));\r\n\r\n          Decode(num,\r\n            4, Text(value \/ Pow(10, 3), \"##.0k\"),\r\n            5, Text(value \/ Pow(10, 3), \"##k\"),\r\n            6, Text(value \/ Pow(10, 3), \"##k\"),\r\n            7, Text(value \/ Pow(10, 6), \"##.0m\"),\r\n            Text(value, \"#,###\")\r\n          );\r\n        `<\/span>\r\n      },\r\n      where: <span style=\"color: #d14\">`cluster_avg_capacity_mw &gt; <span style=\"color: #333;font-weight: normal\">${clusterLabelThreshold}<\/span>`<\/span>\r\n    },\r\n    {\r\n      symbol: {\r\n        type: <span style=\"color: #d14\">\"text\"<\/span>,\r\n        haloColor,\r\n        haloSize: <span style=\"color: #d14\">\"1px\"<\/span>,\r\n        color,\r\n        font: {\r\n          family: <span style=\"color: #d14\">\"Noto Sans\"<\/span>,\r\n          size: <span style=\"color: #d14\">\"11px\"<\/span>\r\n        },\r\n        xoffset: <span style=\"color: #008080\">0<\/span>,\r\n        yoffset: <span style=\"color: #d14\">\"-15px\"<\/span>\r\n      },\r\n      labelPlacement: <span style=\"color: #d14\">\"above-right\"<\/span>,\r\n      labelExpressionInfo: {\r\n        expression: <span style=\"color: #d14\">\"Text($feature.cluster_count, '#,### plants')\"<\/span>\r\n      },\r\n      where: <span style=\"color: #d14\">`cluster_avg_capacity_mw &lt;= <span style=\"color: #333;font-weight: normal\">${clusterLabelThreshold}<\/span>`<\/span>\r\n    },\r\n    {\r\n      symbol: {\r\n        type: <span style=\"color: #d14\">\"text\"<\/span>,\r\n        haloColor,\r\n        haloSize: <span style=\"color: #d14\">\"2px\"<\/span>,\r\n        color,\r\n        font: {\r\n          weight: <span style=\"color: #d14\">\"bold\"<\/span>,\r\n          family: <span style=\"color: #d14\">\"Noto Sans\"<\/span>,\r\n          size: <span style=\"color: #d14\">\"18px\"<\/span>\r\n        }\r\n      },\r\n      labelPlacement: <span style=\"color: #d14\">\"above-right\"<\/span>,\r\n      labelExpressionInfo: {\r\n        expression: <span style=\"color: #d14\">\"$feature.cluster_type_fuel1\"<\/span>\r\n      },\r\n      where: <span style=\"color: #d14\">`cluster_avg_capacity_mw &lt;= <span style=\"color: #333;font-weight: normal\">${clusterLabelThreshold}<\/span>`<\/span>\r\n    },\r\n    {\r\n      symbol: {\r\n        type: <span style=\"color: #d14\">\"text\"<\/span>,\r\n        haloColor,\r\n        haloSize: <span style=\"color: #d14\">\"1px\"<\/span>,\r\n        color,\r\n        font: {\r\n          weight: <span style=\"color: #d14\">\"bold\"<\/span>,\r\n          family: <span style=\"color: #d14\">\"Noto Sans\"<\/span>,\r\n          size: <span style=\"color: #d14\">\"12px\"<\/span>\r\n        },\r\n        xoffset: <span style=\"color: #008080\">0<\/span>,\r\n        yoffset: <span style=\"color: #008080\">0<\/span>\r\n      },\r\n      labelPlacement: <span style=\"color: #d14\">\"center-center\"<\/span>,\r\n      labelExpressionInfo: {\r\n        expression: <span style=\"color: #d14\">`\r\n          var value = $feature.cluster_avg_capacity_mw;\r\n          var num = Count(Text(Round(value)));\r\n\r\n          Decode(num,\r\n            4, Text(value \/ Pow(10, 3), \"##.0k\"),\r\n            5, Text(value \/ Pow(10, 3), \"##k\"),\r\n            6, Text(value \/ Pow(10, 3), \"##k\"),\r\n            7, Text(value \/ Pow(10, 6), \"##.0m\"),\r\n            Text(value, \"#,###\")\r\n          );\r\n        `<\/span>\r\n      },\r\n      where: <span style=\"color: #d14\">`cluster_avg_capacity_mw &lt;= <span style=\"color: #333;font-weight: normal\">${clusterLabelThreshold}<\/span>`<\/span>\r\n    }\r\n  ]\r\n};\r\n<\/code><\/pre>\n<\/details>\n"},{"acf_fc_layout":"image","image":{"ID":925441,"id":925441,"title":"cluster-advanced-labels","filename":"cluster-advanced-labels.png","filesize":86660,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/cluster-advanced-labels.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\/cluster-advanced-labels","alt":"Global power plants clustered with several labels summarizing the points within each cluster.","author":"6561","description":"","caption":"Global power plants clustered and labeled with summary information including the predominant fuel type, number of power plants, and average wattage produced by plants in the cluster.","name":"cluster-advanced-labels","status":"inherit","uploaded_to":922831,"date":"2020-07-08 20:40:37","modified":"2020-07-08 20:43:54","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":800,"height":417,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/cluster-advanced-labels-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/cluster-advanced-labels.png","medium-width":464,"medium-height":242,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/cluster-advanced-labels.png","medium_large-width":768,"medium_large-height":400,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/cluster-advanced-labels.png","large-width":800,"large-height":417,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/cluster-advanced-labels.png","1536x1536-width":800,"1536x1536-height":417,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/cluster-advanced-labels.png","2048x2048-width":800,"2048x2048-height":417,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/cluster-advanced-labels.png","card_image-width":800,"card_image-height":417,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/cluster-advanced-labels.png","wide_image-width":800,"wide_image-height":417}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/featurereduction-cluster-filter-slider\/index.html"},{"acf_fc_layout":"content","content":"<p>While the labels help make this visualization easy to explore, it takes a lot of time to get the labels right. In fact, placing this much information in labels may not be necessary in most scenarios <a href=\"#a-final-thought\">because of the issue I describe below<\/a>.<\/p>\n<p>Also, when you label clusters with summary information, you should also consider adding complementary labels on individual features that don&#8217;t belong to a cluster. The sample above demonstrates this as well.<\/p>\n<h2>Suggested default labels<\/h2>\n<p>Since cluster count may not be the only label of importance to the user, we added the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-smartMapping-labels-clusters.html#getLabelSchemes\">getLabelSchemes<\/a> method in the new <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-smartMapping-labels-clusters.html\"><code>esri\/smartMapping\/labels\/clusters<\/code><\/a> module to generate suggested primary and secondary label classes for use in clustering.<\/p>\n<p>All label classes are based on the fields used by the layer&#8217;s renderer. This can especially come in handy with complex renderers that refer to multiple fields and <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/arcade\/\">Arcade expressions<\/a>.<\/p>\n<p>Simply reference the layer and view in the method. Then you can apply any of the primary or secondary label schemes on the layer&#8217;s <code>featureReduction<\/code> property.<\/p>\n<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\"><span style=\"color: #998;font-style: italic\">\/\/ Sets a suggested popupTemplate on the layer based on its renderer<\/span>\r\nclusterLabelCreator.getLabelSchemes({\r\n  layer: featureLayer,\r\n  view: view\r\n}).then(<span><span style=\"color: #333;font-weight: bold\">function<\/span>(<span>labelSchemes<\/span>)<\/span>{\r\n  <span style=\"color: #998;font-style: italic\">\/\/ labelSchemes has a `primaryScheme` and `secondarySchemes`<\/span>\r\n  <span style=\"color: #333;font-weight: bold\">const<\/span> featureReduction = featureLayer.featureReduction.clone();\r\n  <span style=\"color: #333;font-weight: bold\">const<\/span> { labelingInfo, clusterMinSize } = labelSchemes.primaryScheme;\r\n  featureReduction.labelingInfo = labelingInfo;\r\n  featureReduction.clusterMinSize = clusterMinSize;\r\n\r\n  featureLayer.featureReduction = featureReduction;\r\n}).catch(<span><span style=\"color: #333;font-weight: bold\">function<\/span>(<span>error<\/span>)<\/span>{\r\n  <span style=\"color: #0086b3\">console<\/span>.error(error);\r\n});\r\n<\/code><\/pre>\n<p>The suggested label classes generated for number fields will contain a TextSymbol with a color and halo that look good for most renderer configurations. <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/arcade\/#labeling\">Label expressions<\/a> will look something like the following to improve the formatting of larger clusters. <\/p>\n<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\"><span style=\"color: #998;font-style: italic\">\/\/ clusterField can be either<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ {cluster_count} or<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ {cluster_avg_FIELDNAME}<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ where FEILDNAME is the name of<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ a number field used by the renderer<\/span>\r\n$feature[<span style=\"color: #d14\">\"${clusterField}\"<\/span>];\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> value = $feature[<span style=\"color: #d14\">\"${clusterField}\"<\/span>];\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> num = Count(Text(Round(value)));\r\n<span style=\"color: #333;font-weight: bold\">var<\/span> label = When(\r\n  num &lt; <span style=\"color: #008080\">4<\/span>, Text(value, <span style=\"color: #d14\">\"#.#\"<\/span>),\r\n  num == <span style=\"color: #008080\">4<\/span>, Text(value \/ Pow(<span style=\"color: #008080\">10<\/span>, <span style=\"color: #008080\">3<\/span>), <span style=\"color: #d14\">\"#.0k\"<\/span>),\r\n  num &lt;= <span style=\"color: #008080\">6<\/span>, Text(value \/ Pow(<span style=\"color: #008080\">10<\/span>, <span style=\"color: #008080\">3<\/span>), <span style=\"color: #d14\">\"#k\"<\/span>),\r\n  num == <span style=\"color: #008080\">7<\/span>, Text(value \/ Pow(<span style=\"color: #008080\">10<\/span>, <span style=\"color: #008080\">6<\/span>), <span style=\"color: #d14\">\"#.0m\"<\/span>),\r\n  num &gt; <span style=\"color: #008080\">7<\/span>, Text(value \/ Pow(<span style=\"color: #008080\">10<\/span>, <span style=\"color: #008080\">6<\/span>), <span style=\"color: #d14\">\"#m\"<\/span>),\r\n  Text(value, <span style=\"color: #d14\">\"#,###\"<\/span>)\r\n);\r\n<span style=\"color: #333;font-weight: bold\">return<\/span> label;\r\n<\/code><\/pre>\n<p>Check out the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/featurereduction-cluster-filter\/index.html\">Point clustering &#8211; generate suggested configuration<\/a> sample to see how this works in a live app.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":928481,"id":928481,"title":"Screen Shot 2020-07-09 at 12.14.22 PM","filename":"Screen-Shot-2020-07-09-at-12.14.22-PM.png","filesize":187113,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.14.22-PM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\/screen-shot-2020-07-09-at-12-14-22-pm","alt":"Places of worship in India clustered.","author":"6561","description":"","caption":"Places of worship in India. The color represents the predominant religion of places of worship in each cluster. The size and label of each cluster indicate the total number of points in the cluster. Note the formatting of larger clusters.","name":"screen-shot-2020-07-09-at-12-14-22-pm","status":"inherit","uploaded_to":922831,"date":"2020-07-09 19:14:28","modified":"2020-07-09 19:16:06","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":2496,"height":1510,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.14.22-PM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.14.22-PM.png","medium-width":431,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.14.22-PM.png","medium_large-width":768,"medium_large-height":465,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.14.22-PM.png","large-width":1785,"large-height":1080,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.14.22-PM-1536x929.png","1536x1536-width":1536,"1536x1536-height":929,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.14.22-PM-2048x1239.png","2048x2048-width":2048,"2048x2048-height":1239,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.14.22-PM-769x465.png","card_image-width":769,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-09-at-12.14.22-PM-1785x1080.png","wide_image-width":1785,"wide_image-height":1080}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/featurereduction-cluster-filter\/index.html"},{"acf_fc_layout":"content","content":"<h2>Experiment with alternate label schemes and configurations<\/h2>\n<p>While the primary labeling scheme usually involves placing the cluster count in the center of the cluster, you may be given a primary scheme that involves another attribute. For example, when generating label classes for any layer rendered with a <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-visualVariables-SizeVariable.html\">size visual variable<\/a>, the default scheme will suggest labeling clusters with the average value of the field or expression used in the size variable. This should provide clarity to the end user since the size variable referenced in the renderer is reused as the cluster size variable. <\/p>\n<p>For example, given a <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-UniqueValueRenderer.html\">UniqueValueRenderer<\/a> containing a size variable in the power plants layer, the primary scheme will show the average capacity of power plants.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":926321,"id":926321,"title":"Screen Shot 2020-07-08 at 4.12.21 PM","filename":"Screen-Shot-2020-07-08-at-4.12.21-PM.png","filesize":63764,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.21-PM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\/screen-shot-2020-07-08-at-4-12-21-pm","alt":"power plants clustered and labeled with the average capacity of power plants in the center of the cluster","author":"6561","description":"","caption":"The labels on these clusters may appear to be counts, but in reality they represent the average capacity of power plants in each cluster. This is the default because the size of the cluster represents average capacity, not feature count.","name":"screen-shot-2020-07-08-at-4-12-21-pm","status":"inherit","uploaded_to":922831,"date":"2020-07-08 23:59:35","modified":"2020-07-08 23:59: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":896,"height":516,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.21-PM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.21-PM.png","medium-width":453,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.21-PM.png","medium_large-width":768,"medium_large-height":442,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.21-PM.png","large-width":896,"large-height":516,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.21-PM.png","1536x1536-width":896,"1536x1536-height":516,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.21-PM.png","2048x2048-width":896,"2048x2048-height":516,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.21-PM-807x465.png","card_image-width":807,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.21-PM.png","wide_image-width":896,"wide_image-height":516}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.21-PM.png"},{"acf_fc_layout":"content","content":"<p>If the layer&#8217;s renderer did not include a size variable, then cluster size would indicate the count. Therefore, the suggested primary labelingInfo would display the count.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":926251,"id":926251,"title":"Screen Shot 2020-07-08 at 4.09.00 PM","filename":"Screen-Shot-2020-07-08-at-4.09.00-PM.png","filesize":54843,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.09.00-PM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\/screen-shot-2020-07-08-at-4-09-00-pm","alt":"power plants clustered and labeled with the number of power plants in the center of the cluster","author":"6561","description":"","caption":"When no size variable is used on the renderer, the cluster size will always indicate the number of features in the cluster. So labeling these clusters with the count makes more sense.","name":"screen-shot-2020-07-08-at-4-09-00-pm","status":"inherit","uploaded_to":922831,"date":"2020-07-08 23:53:41","modified":"2020-07-09 00:01:21","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":1005,"height":571,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.09.00-PM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.09.00-PM.png","medium-width":459,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.09.00-PM.png","medium_large-width":768,"medium_large-height":436,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.09.00-PM.png","large-width":1005,"large-height":571,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.09.00-PM.png","1536x1536-width":1005,"1536x1536-height":571,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.09.00-PM.png","2048x2048-width":1005,"2048x2048-height":571,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.09.00-PM-818x465.png","card_image-width":818,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.09.00-PM.png","wide_image-width":1005,"wide_image-height":571}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.09.00-PM.png"},{"acf_fc_layout":"content","content":"<p>Given the renderer is a UniqueValueRenderer, you could use the predominant fuel type provided in the secondary label schemes to label each cluster.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":926261,"id":926261,"title":"Screen Shot 2020-07-08 at 4.12.55 PM","filename":"Screen-Shot-2020-07-08-at-4.12.55-PM.png","filesize":67102,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.55-PM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\/screen-shot-2020-07-08-at-4-12-55-pm","alt":"clusters with labels showing the predominant fuel type of power plants in each cluster.","author":"6561","description":"","caption":"You can opt to label clusters with a secondary label scheme indicating the predominant type of features within the clusters. Since the power plants layer colors each plant based on the fuel type, the color of each cluster indicates the predominant type. ","name":"screen-shot-2020-07-08-at-4-12-55-pm","status":"inherit","uploaded_to":922831,"date":"2020-07-08 23:55:23","modified":"2020-07-08 23:58:01","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":969,"height":503,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.55-PM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.55-PM.png","medium-width":464,"medium-height":241,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.55-PM.png","medium_large-width":768,"medium_large-height":399,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.55-PM.png","large-width":969,"large-height":503,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.55-PM.png","1536x1536-width":969,"1536x1536-height":503,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.55-PM.png","2048x2048-width":969,"2048x2048-height":503,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.55-PM-826x429.png","card_image-width":826,"card_image-height":429,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.55-PM.png","wide_image-width":969,"wide_image-height":503}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.12.55-PM.png"},{"acf_fc_layout":"content","content":"<p>Or you can use all available schemes to show summary information about each cluster. This requires some rearranging using the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-support-LabelClass.html\">LabelClass<\/a> label placement and <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-symbols-TextSymbol.html\">TextSymbol<\/a> offset properties. <\/p>\n"},{"acf_fc_layout":"image","image":{"ID":926301,"id":926301,"title":"Screen Shot 2020-07-08 at 4.18.53 PM","filename":"Screen-Shot-2020-07-08-at-4.18.53-PM.png","filesize":51936,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.18.53-PM.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\/screen-shot-2020-07-08-at-4-18-53-pm","alt":"clusters labeled with multiple label schemes","author":"6561","description":"","caption":"You can add more than one label class to clusters to provide additional summary information about features within the cluster.","name":"screen-shot-2020-07-08-at-4-18-53-pm","status":"inherit","uploaded_to":922831,"date":"2020-07-08 23:58:16","modified":"2020-07-08 23:58:56","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":894,"height":468,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.18.53-PM-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.18.53-PM.png","medium-width":464,"medium-height":243,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.18.53-PM.png","medium_large-width":768,"medium_large-height":402,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.18.53-PM.png","large-width":894,"large-height":468,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.18.53-PM.png","1536x1536-width":894,"1536x1536-height":468,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.18.53-PM.png","2048x2048-width":894,"2048x2048-height":468,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.18.53-PM-826x432.png","card_image-width":826,"card_image-height":432,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.18.53-PM.png","wide_image-width":894,"wide_image-height":468}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.18.53-PM.png"},{"acf_fc_layout":"content","content":"<p><a name=\"a-final-thought\"><\/a><\/p>\n<h2>A final thought<\/h2>\n<p>In <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/mapping\/mapping\/thematic-point-clustering-for-data-exploration\/\">previous posts about clustering<\/a>, I stated the following, and it is worth repeating:<\/p>\n<blockquote><p>Clustering options available via featureReduction do not perform complex statistical analyses. Therefore, the clustering visualizations described above should not be interpreted as precise, statistically significant \u201cclusters\u201d of data. Rather, they should merely be approached as a nice summary of the data, providing you with a preview to potentially identify spatial patterns that may or may not reveal significant storylines.<\/p><\/blockquote>\n<p>Also, be sure to check out the newly documented <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-support-FeatureReductionCluster.html\">configuration best practices<\/a> in the FeatureReductionCluster class description and the updated clustering samples:<\/p>\n<ul>\n<li>\n<a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/featurereduction-cluster\/index.html\">Point clustering &#8211; basic configuration<\/a><\/li>\n<li><a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/featurereduction-cluster-filter\/index.html\">Point clustering &#8211; generate suggested configuration<\/a><\/li>\n<li><a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/featurereduction-cluster-filter-slider\/index.html\">Point clustering &#8211; advanced configuration<\/a><\/li>\n<\/ul>\n"}],"authors":[{"ID":6561,"user_firstname":"Kristian","user_lastname":"Ekenes","nickname":"Kristian Ekenes","user_nicename":"kekenes","display_name":"Kristian Ekenes","user_email":"KEkenes@esri.com","user_url":"https:\/\/github.com\/ekenes","user_registered":"2018-03-02 00:18:32","user_description":"Kristian Ekenes is a Principal Product Engineer at Esri specializing in data visualization on the web. He works on the ArcGIS Maps SDK for JavaScript, ArcGIS Arcade, and Map Viewer in ArcGIS Online. Kristian's work focuses on researching and developing new and innovative data visualization capabilities of geospatial data in web maps, Arcade integration in web maps, and applications of generative AI assistants in web maps. Prior to joining Esri, he worked as a GIS Specialist for an environmental consulting company. Kristian has degrees from Brigham Young University and Arizona State University.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"related_articles":[{"ID":686592,"post_author":"6561","post_date":"2020-01-07 08:00:08","post_date_gmt":"2020-01-07 16:00:08","post_content":"","post_title":"Point clustering now available in ArcGIS JavaScript 4.x API","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"point-clustering-now-available-in-arcgis-javascript-4-x-api","to_ping":"","pinged":"","post_modified":"2020-01-07 08:02:58","post_modified_gmt":"2020-01-07 16:02:58","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=686592","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":684312,"post_author":"6751","post_date":"2019-12-18 10:27:02","post_date_gmt":"2019-12-18 18:27:02","post_content":"","post_title":"Clustering now available in Map Viewer","post_excerpt":"","post_status":"publish","comment_status":"open","ping_status":"closed","post_password":"","post_name":"clustering-now-available-in-map-viewer","to_ping":"","pinged":"","post_modified":"2021-04-15 15:06:38","post_modified_gmt":"2021-04-15 22:06:38","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=684312","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":861861,"post_author":"4271","post_date":"2020-07-09 11:48:26","post_date_gmt":"2020-07-09 18:48:26","post_content":"","post_title":"What's new in the ArcGIS API for JavaScript (July 2020)","post_excerpt":"","post_status":"publish","comment_status":"open","ping_status":"closed","post_password":"","post_name":"whats-new-in-the-arcgis-api-for-javascript-july-2020","to_ping":"","pinged":"","post_modified":"2020-07-10 11:56:53","post_modified_gmt":"2020-07-10 18:56:53","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=861861","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":79881,"post_author":"6561","post_date":"2017-10-11 08:00:12","post_date_gmt":"2017-10-11 08:00:12","post_content":"","post_title":"Thematic point clustering for data exploration","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"thematic-point-clustering-for-data-exploration","to_ping":"","pinged":"","post_modified":"2018-05-11 18:12:32","post_modified_gmt":"2018-05-11 18:12:32","post_content_filtered":"","post_parent":0,"guid":"http:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/thematic-point-clustering-for-data-exploration\/","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"}],"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/card-1.jpg","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/banner-1.jpg"},"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>Labeling support added to point clustering<\/title>\n<meta name=\"description\" content=\"The ArcGIS API for JavaScript now supports labeling point clusters with the total count of features, or other aggregate summary information.\" \/>\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\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Labeling support added to point clustering\" \/>\n<meta property=\"og:description\" content=\"The ArcGIS API for JavaScript now supports labeling point clusters with the total count of features, or other aggregate summary information.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\" \/>\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=\"2020-07-10T16:45:42+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.esri.com\/arcgis-blog\/wp-content\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.18.53-PM.png\" \/>\n\t<meta property=\"og:image:width\" content=\"894\" \/>\n\t<meta property=\"og:image:height\" content=\"468\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\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\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\"},\"author\":{\"name\":\"Kristian Ekenes\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5469f723fbfb78138efbb1da56e6aa9b\"},\"headline\":\"Labeling support added to point clustering\",\"datePublished\":\"2020-07-09T20:00:29+00:00\",\"dateModified\":\"2020-07-10T16:45:42+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\"},\"wordCount\":6,\"commentCount\":1,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"clustering\",\"data visualization\",\"JavaScript\",\"labeling\",\"what's new june 2020\"],\"articleSection\":[\"Mapping\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\",\"name\":\"Labeling support added to point clustering\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2020-07-09T20:00:29+00:00\",\"dateModified\":\"2020-07-10T16:45:42+00:00\",\"description\":\"The ArcGIS API for JavaScript now supports labeling point clusters with the total count of features, or other aggregate summary information.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Labeling support added to point clustering\"}]},{\"@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\/5469f723fbfb78138efbb1da56e6aa9b\",\"name\":\"Kristian Ekenes\",\"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\/2021\/10\/ekenes-zurich-213x200.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png\",\"caption\":\"Kristian Ekenes\"},\"description\":\"Kristian Ekenes is a Principal Product Engineer at Esri specializing in data visualization on the web. He works on the ArcGIS Maps SDK for JavaScript, ArcGIS Arcade, and Map Viewer in ArcGIS Online. Kristian's work focuses on researching and developing new and innovative data visualization capabilities of geospatial data in web maps, Arcade integration in web maps, and applications of generative AI assistants in web maps. Prior to joining Esri, he worked as a GIS Specialist for an environmental consulting company. Kristian has degrees from Brigham Young University and Arizona State University.\",\"sameAs\":[\"https:\/\/github.com\/ekenes\",\"https:\/\/www.linkedin.com\/in\/kristian-ekenes\/\",\"https:\/\/x.com\/kekenes\"],\"gender\":\"male\",\"jobTitle\":\"Principal Product Engineer\",\"worksFor\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/kekenes\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Labeling support added to point clustering","description":"The ArcGIS API for JavaScript now supports labeling point clusters with the total count of features, or other aggregate summary information.","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\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering","og_locale":"en_US","og_type":"article","og_title":"Labeling support added to point clustering","og_description":"The ArcGIS API for JavaScript now supports labeling point clusters with the total count of features, or other aggregate summary information.","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2020-07-10T16:45:42+00:00","og_image":[{"width":894,"height":468,"url":"https:\/\/www.esri.com\/arcgis-blog\/wp-content\/uploads\/2020\/07\/Screen-Shot-2020-07-08-at-4.18.53-PM.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering"},"author":{"name":"Kristian Ekenes","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5469f723fbfb78138efbb1da56e6aa9b"},"headline":"Labeling support added to point clustering","datePublished":"2020-07-09T20:00:29+00:00","dateModified":"2020-07-10T16:45:42+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering"},"wordCount":6,"commentCount":1,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["clustering","data visualization","JavaScript","labeling","what's new june 2020"],"articleSection":["Mapping"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering","name":"Labeling support added to point clustering","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2020-07-09T20:00:29+00:00","dateModified":"2020-07-10T16:45:42+00:00","description":"The ArcGIS API for JavaScript now supports labeling point clusters with the total count of features, or other aggregate summary information.","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/labels-now-supported-in-point-clustering#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Labeling support added to point clustering"}]},{"@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\/5469f723fbfb78138efbb1da56e6aa9b","name":"Kristian Ekenes","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\/2021\/10\/ekenes-zurich-213x200.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png","caption":"Kristian Ekenes"},"description":"Kristian Ekenes is a Principal Product Engineer at Esri specializing in data visualization on the web. He works on the ArcGIS Maps SDK for JavaScript, ArcGIS Arcade, and Map Viewer in ArcGIS Online. Kristian's work focuses on researching and developing new and innovative data visualization capabilities of geospatial data in web maps, Arcade integration in web maps, and applications of generative AI assistants in web maps. Prior to joining Esri, he worked as a GIS Specialist for an environmental consulting company. Kristian has degrees from Brigham Young University and Arizona State University.","sameAs":["https:\/\/github.com\/ekenes","https:\/\/www.linkedin.com\/in\/kristian-ekenes\/","https:\/\/x.com\/kekenes"],"gender":"male","jobTitle":"Principal Product Engineer","worksFor":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/author\/kekenes"}]}},"text_date":"July 9, 2020","author_name":"Kristian Ekenes","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/kekenes","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/07\/banner-1.jpg","primary_product":"ArcGIS Maps SDK for JavaScript","tag_data":[{"term_id":26751,"name":"clustering","slug":"clustering","term_group":0,"term_taxonomy_id":26751,"taxonomy":"post_tag","description":"","parent":0,"count":23,"filter":"raw"},{"term_id":30111,"name":"data visualization","slug":"data-visualization","term_group":0,"term_taxonomy_id":30111,"taxonomy":"post_tag","description":"","parent":0,"count":97,"filter":"raw"},{"term_id":24921,"name":"JavaScript","slug":"javascript","term_group":0,"term_taxonomy_id":24921,"taxonomy":"post_tag","description":"","parent":0,"count":151,"filter":"raw"},{"term_id":128002,"name":"labeling","slug":"labeling","term_group":0,"term_taxonomy_id":128002,"taxonomy":"post_tag","description":"","parent":0,"count":14,"filter":"raw"},{"term_id":667481,"name":"what's new june 2020","slug":"whats-new-june-2020","term_group":0,"term_taxonomy_id":667481,"taxonomy":"post_tag","description":"","parent":0,"count":27,"filter":"raw"}],"category_data":[{"term_id":22941,"name":"Mapping","slug":"mapping","term_group":0,"term_taxonomy_id":22941,"taxonomy":"category","description":"","parent":0,"count":2690,"filter":"raw"}],"product_data":[{"term_id":36831,"name":"ArcGIS Maps SDK for JavaScript","slug":"js-api-arcgis","term_group":0,"term_taxonomy_id":36831,"taxonomy":"product","description":"","parent":36601,"count":363,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":763,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=js-api-arcgis","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/922831","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\/6561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=922831"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/922831\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=922831"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=922831"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=922831"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=922831"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=922831"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}