{"id":686592,"date":"2020-01-07T08:00:08","date_gmt":"2020-01-07T16:00:08","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=686592"},"modified":"2020-01-07T08:02:58","modified_gmt":"2020-01-07T16:02:58","slug":"point-clustering-now-available-in-arcgis-javascript-4-x-api","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api","title":{"rendered":"Point clustering now available in ArcGIS JavaScript 4.x API"},"author":6561,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[22941],"tags":[26751,30111,515732],"industry":[],"product":[36831,36601],"class_list":["post-686592","blog","type-blog","status-publish","format-standard","hentry","category-mapping","tag-clustering","tag-data-visualization","tag-whats-new-december-2019","product-js-api-arcgis","product-developers"],"acf":{"short_description":"Clustering allows you to summarize and explore point layers as spatial clusters.","flexible_content":[{"acf_fc_layout":"content","content":"<p>Last month, the <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/announcements\/whats-new-in-arcgis-api-for-javascript-december-2019\/\">4.14 version<\/a> of the ArcGIS API for JavaScript (ArcGIS JS API) introduced <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-support-FeatureReductionCluster.html\">point clustering<\/a> in beta. Clustering is a method of merging nearby and overlapping features into a single symbol.<\/p>\n<p>Clustering is configured on the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-FeatureLayer.html#featureReduction\">featureReduction<\/a> property of a <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-FeatureLayer.html\">FeatureLayer<\/a>, <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-CSVLayer.html\">CSVLayer<\/a>, or <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-GeoJSONLayer.html\">GeoJSONLayer<\/a>.<\/p>\n<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\">layer.featureReduction = {\r\n  type: <span style=\"color: #d14\">\"cluster\"<\/span>\r\n}\r\n<\/code><\/pre>\n<p>Take a look at this GeoJSONLayer displaying earthquakes from last month.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":691852,"id":691852,"title":"earthquakes-red-dots","filename":"earthquakes-red-dots.png","filesize":50740,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquakes-red-dots.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api\/earthquakes-red-dots","alt":"The state of Alaska with earthquakes visualized as red dots.","author":"6561","description":"","caption":"Earthquakes as reported by the USGS from November to December 2019. Each red dot represents one earthquake.","name":"earthquakes-red-dots","status":"inherit","uploaded_to":686592,"date":"2019-12-31 19:05:22","modified":"2019-12-31 19:05:49","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":700,"height":516,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquakes-red-dots-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquakes-red-dots.png","medium-width":354,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquakes-red-dots.png","medium_large-width":700,"medium_large-height":516,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquakes-red-dots.png","large-width":700,"large-height":516,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquakes-red-dots.png","1536x1536-width":700,"1536x1536-height":516,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquakes-red-dots.png","2048x2048-width":700,"2048x2048-height":516,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquakes-red-dots-631x465.png","card_image-width":631,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquakes-red-dots.png","wide_image-width":700,"wide_image-height":516}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>You can already see some spatial patterns by just displaying all the data in the view. However, in some areas where symbols overlap, the actual density or concentration of earthquakes is not obvious. Once clustering is enabled, you immediately see a clearer view of the data. For this time period, the area in and around Anchorage appears to be the epicenter of seismic activity.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":687582,"id":687582,"title":"basic-100px","filename":"basic-100px-e1576877387764.png","filesize":214274,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-100px-e1576877387764.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api\/basic-100px","alt":"The state of Alaska with earthquakes visualized in clusters to show areas where earthquakes occur more frequently.","author":"6561","description":"","caption":"Earthquakes as reported by the USGS from November to December 2019. The size of each icon indicates the number of earthquakes that occurred in the region.","name":"basic-100px","status":"inherit","uploaded_to":686592,"date":"2019-12-20 21:07:05","modified":"2019-12-20 21:09:44","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":700,"height":509,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-100px-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-100px-e1576877387764.png","medium-width":359,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-100px-e1576877387764.png","medium_large-width":700,"medium_large-height":509,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-100px-e1576877387764.png","large-width":700,"large-height":509,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-100px-e1576877387764.png","1536x1536-width":700,"1536x1536-height":509,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-100px-e1576877387764.png","2048x2048-width":700,"2048x2048-height":509,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-100px-639x465.png","card_image-width":639,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-100px-e1576877387764.png","wide_image-width":700,"wide_image-height":509}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/featurereduction-cluster\/index.html"},{"acf_fc_layout":"content","content":"<details>\n<summary>\n    <strong>View the code that makes this sample work<\/strong><br \/>\n  <\/summary>\n<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\"><span style=\"color: #333;font-weight: bold\">const<\/span> layer = <span style=\"color: #333;font-weight: bold\">new<\/span> GeoJSONLayer({\r\n  title: <span style=\"color: #d14\">\"Earthquakes from the last month\"<\/span>,\r\n  url: <span style=\"color: #d14\">\"https:\/\/earthquake.usgs.gov\/earthquakes\/feed\/v1.0\/summary\/all_month.geojson\"<\/span>,\r\n  copyright: <span style=\"color: #d14\">\"USGS Earthquakes\"<\/span>,\r\n  <span style=\"color: #998;font-style: italic\">\/\/ enables clustering on the layer<\/span>\r\n  featureReduction: {\r\n    type: <span style=\"color: #d14\">\"cluster\"<\/span>\r\n  },\r\n  renderer: {\r\n    type: <span style=\"color: #d14\">\"simple\"<\/span>,\r\n    field: <span style=\"color: #d14\">\"mag\"<\/span>,\r\n    symbol: {\r\n      type: <span style=\"color: #d14\">\"simple-marker\"<\/span>,\r\n      size: <span style=\"color: #008080\">4<\/span>,\r\n      color: <span style=\"color: #d14\">\"#fc3232\"<\/span>,\r\n      outline: {\r\n        color: [<span style=\"color: #008080\">50<\/span>, <span style=\"color: #008080\">50<\/span>, <span style=\"color: #008080\">50<\/span>]\r\n      }\r\n    }\r\n  }\r\n});\r\n<\/code><\/pre>\n<\/details>\n<p>Without clustering enabled, it&#8217;s difficult to see the high number of earthquakes in the northwest and south-central regions because they are stacked on top of one another. <\/p>\n<p>Notice this map was created with a GeoJSONLayer in a non-Web Mercator spatial reference (i.e. Alaska Polar Stereographic). This is not possible using the <a href=\"https:\/\/developers.arcgis.com\/javascript\/3\/jsapi\/featurelayer-amd.html#setfeaturereduction\">ArcGIS JS API 3.x implementation of clustering<\/a>, which limits you to the Web Mercator and WGS 84 spatial references. In the 4.x implementation of clustering, support for projected non-Web Mercator spatial references is experimental.<\/p>\n<h2>Cluster radius<\/h2>\n<p>The <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-support-FeatureReductionCluster.html\">FeatureReductionCluster<\/a> class defines the properties you can configure in point clusters. One of these properties is <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-support-FeatureReductionCluster.html#clusterRadius\">clusterRadius<\/a>. This property controls each cluster\u2019s area of influence. By default, the <code>clusterRadius<\/code> is 80 pixels. <\/p>\n<p>Decreasing the cluster radius creates more clusters typically comprised of a fewer number of earthquakes.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":687572,"id":687572,"title":"basic-50px","filename":"basic-50px-e1577818622441.png","filesize":250651,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-50px-e1577818622441.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api\/basic-50px","alt":"The state of Alaska with earthquakes visualized in smaller clusters to show areas where earthquakes occur more frequently.","author":"6561","description":"","caption":"Clustered earthquakes as reported by the USGS from November to December 2019. Each cluster was created using a 50px cluster radius. This creates more clusters typically comprised of a fewer number of earthquakes.","name":"basic-50px","status":"inherit","uploaded_to":686592,"date":"2019-12-20 21:06:45","modified":"2019-12-31 17:20:39","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":700,"height":518,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-50px-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-50px-e1577818622441.png","medium-width":353,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-50px-e1577818622441.png","medium_large-width":700,"medium_large-height":518,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-50px-e1577818622441.png","large-width":700,"large-height":518,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-50px-e1577818622441.png","1536x1536-width":700,"1536x1536-height":518,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-50px-e1577818622441.png","2048x2048-width":700,"2048x2048-height":518,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-50px-628x465.png","card_image-width":628,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-50px-e1577818622441.png","wide_image-width":700,"wide_image-height":518}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Increasing the cluster radius reduces the number of clusters, but increases the number of features in each of them.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":687592,"id":687592,"title":"basic-256px","filename":"basic-256px-e1577818713851.png","filesize":175331,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-256px-e1577818713851.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api\/basic-256px","alt":"The state of Alaska with earthquakes visualized in larger clusters to show areas where earthquakes occur more frequently.","author":"6561","description":"","caption":"Clustered earthquakes as reported by the USGS from November to December 2019. Each cluster was created using a 256px cluster radius. This creates fewer clusters typically comprised of a higher number of earthquakes.","name":"basic-256px","status":"inherit","uploaded_to":686592,"date":"2019-12-20 21:07:09","modified":"2019-12-31 17:20:50","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":700,"height":455,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-256px-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-256px-e1577818713851.png","medium-width":402,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-256px-e1577818713851.png","medium_large-width":700,"medium_large-height":455,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-256px-e1577818713851.png","large-width":700,"large-height":455,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-256px-e1577818713851.png","1536x1536-width":700,"1536x1536-height":455,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-256px-e1577818713851.png","2048x2048-width":700,"2048x2048-height":455,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-256px-715x465.png","card_image-width":715,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/basic-256px-e1577818713851.png","wide_image-width":700,"wide_image-height":455}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h2>Popup templates<\/h2>\n<p>You can also configure a <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-support-FeatureReductionCluster.html#popupTemplate\">popupTemplate<\/a> in <code>FeatureReductionCluster<\/code>. This allows the user to view summary information about the features represented by the cluster. This is independent of the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-FeatureLayer.html#popupTemplate\">layer.popupTemplate<\/a>, which will display information for individual non-clustered features. The <code>featureReduction.popupTemplate<\/code> provides you with access to <strong>aggregate fields<\/strong> used to summarize the features within the cluster.<\/p>\n<p>The table below describes the aggregate fields you can reference in the cluster popup.<\/p>\n<h4>Aggregate fields<\/h4>\n<table>\n<tbody>\n<tr style=\"color: #333;background: #f8f8f8\">\n<td><strong>Field Name<\/strong><\/td>\n<td><strong>Description<\/strong><\/td>\n<\/tr>\n<tr>\n<td><code>cluster_count<\/code><\/td>\n<td>The number of features in the cluster. This field is always available on clustered layers.<\/td>\n<\/tr>\n<tr>\n<td><code>cluster_avg_{fieldName}<\/code><\/td>\n<td>Only available in clustered layers with renderers visualizing at least one number field either with size, opacity, rotation, continuous color, or class breaks. This field describes the average of each rendered number field among all features in the cluster.<\/td>\n<\/tr>\n<tr>\n<td><code>cluster_type_{fieldName}<\/code><\/td>\n<td>Only available in clustered layers with a <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-UniqueValueRenderer.html\">UniqueValueRenderer<\/a>. This field describes the predominant value of the rendered field among all features within the cluster.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\">layer.featureReduction = {\r\n  type: <span style=\"color: #d14\">\"cluster\"<\/span>,\r\n  popupTemplate: {\r\n    content: <span style=\"color: #d14\">\"This cluster represents {cluster_count} earthquakes.\"<\/span>\r\n  }\r\n};\r\n<\/code><\/pre>\n<h2>Styles and configurations<\/h2>\n<p>The <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-Renderer.html\">renderer<\/a> controls a layer\u2019s style, even when it is clustered. The following content describes the various ways the renderer affects a clustered layer&#8217;s style and popup.<\/p>\n<h3>Count only<\/h3>\n<p>In the most basic scenario, where all points are styled with a <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-SimpleRenderer.html\">SimpleRenderer<\/a> and no visual variables, the number of features within the cluster will determine the cluster&#8217;s size. This uses the same popup configuration as described in the previous section.<\/p>\n<details>\n<summary>\n    <strong>View the code that makes this sample work<\/strong><br \/>\n  <\/summary>\n<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\"><span style=\"color: #998;font-style: italic\">\/\/ Configures clustering on the layer. A cluster radius<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ of 100px indicates an area comprising screen space 100px<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ in length from the center of the cluster<\/span>\r\n<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\">\/\/ {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  popupTemplate: {\r\n    content: <span style=\"color: #d14\">\"This cluster represents {cluster_count} earthquakes.\"<\/span>\r\n  }\r\n};\r\n\r\n<span style=\"color: #333;font-weight: bold\">const<\/span> layer = <span style=\"color: #333;font-weight: bold\">new<\/span> GeoJSONLayer({\r\n  title: <span style=\"color: #d14\">\"Earthquakes from the last month\"<\/span>,\r\n  url: <span style=\"color: #d14\">\"https:\/\/earthquake.usgs.gov\/earthquakes\/feed\/v1.0\/summary\/all_month.geojson\"<\/span>,\r\n  copyright: <span style=\"color: #d14\">\"USGS Earthquakes\"<\/span>,\r\n  featureReduction: clusterConfig,\r\n  <span style=\"color: #998;font-style: italic\">\/\/ popupTemplates can still be viewed on<\/span>\r\n  <span style=\"color: #998;font-style: italic\">\/\/ individual features<\/span>\r\n  popupTemplate: {\r\n    title: <span style=\"color: #d14\">\"Earthquake Info\"<\/span>,\r\n    content: <span style=\"color: #d14\">\"Magnitude {mag} {type} hit {place} on {time}\"<\/span>\r\n  },\r\n  renderer: {\r\n    type: <span style=\"color: #d14\">\"simple\"<\/span>,\r\n    field: <span style=\"color: #d14\">\"mag\"<\/span>,\r\n    symbol: {\r\n      type: <span style=\"color: #d14\">\"simple-marker\"<\/span>,\r\n      size: <span style=\"color: #008080\">4<\/span>,\r\n      color: <span style=\"color: #d14\">\"#fc3232\"<\/span>,\r\n      outline: {\r\n        color: [<span style=\"color: #008080\">50<\/span>, <span style=\"color: #008080\">50<\/span>, <span style=\"color: #008080\">50<\/span>]\r\n      }\r\n    }\r\n  }\r\n});\r\n<\/code><\/pre>\n<\/details>\n"},{"acf_fc_layout":"image","image":{"ID":690242,"id":690242,"title":"clustering-popup","filename":"clustering-popup-e1577818838942.png","filesize":251800,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-e1577818838942.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api\/clustering-popup","alt":"The state of Alaska with earthquakes visualized in clusters to show areas where earthquakes occur more frequently. An open popup is displayed showing the number of earthquakes represented by one of the clusters.","author":"6561","description":"","caption":"Clustered earthquakes as reported by the USGS from November to December 2019. You can configure a cluster popup template to display the total number of features in each cluster.","name":"clustering-popup","status":"inherit","uploaded_to":686592,"date":"2019-12-31 00:05:18","modified":"2019-12-31 17:22: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":700,"height":547,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-e1577818838942.png","medium-width":334,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-e1577818838942.png","medium_large-width":700,"medium_large-height":547,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-e1577818838942.png","large-width":700,"large-height":547,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-e1577818838942.png","1536x1536-width":700,"1536x1536-height":547,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-e1577818838942.png","2048x2048-width":700,"2048x2048-height":547,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-595x465.png","card_image-width":595,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-e1577818838942.png","wide_image-width":700,"wide_image-height":547}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/featurereduction-cluster\/index.html"},{"acf_fc_layout":"content","content":"<h2>Visual variables and class breaks<\/h2>\n<p>When any numeric field is used by the renderer, either with one or more <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-visualVariables-VisualVariable.html\">visual variables<\/a> or a <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-ClassBreaksRenderer.html\">ClassBreaksRenderer<\/a>, the average value of that field will be used in the cluster symbology and made available to the developer in the <code>popupTemplate<\/code>.<\/p>\n<p>In the example below, the layer representing weather stations is rendered with three visual variables: <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-visualVariables-ColorVariable.html\">color<\/a>, <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-visualVariables-SizeVariable.html\">size<\/a>, and <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-visualVariables-RotationVariable.html\">rotation<\/a>. When clustering is enabled, the average of each field referenced in the visual variables is computed for the features within each cluster. The color, rotation, and size of the cluster is then applied to the cluster graphic according to the average value of each respective field for the visual variables of features in that cluster.<\/p>\n<details>\n<summary>\n    <strong>View the code that makes this sample work<\/strong><br \/>\n  <\/summary>\n<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\"><span style=\"color: #998;font-style: italic\">\/\/ Displays each weather station with three variables:<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ Rotation - indicates wind direction<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ Color - indicates air temperature<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ Size - indicates wind speed<\/span>\r\n\r\n<span style=\"color: #333;font-weight: bold\">const<\/span> renderer = {\r\n  type: <span style=\"color: #d14\">\"simple\"<\/span>,\r\n  symbol: {\r\n    type: <span style=\"color: #d14\">\"simple-marker\"<\/span>,\r\n    <span style=\"color: #998;font-style: italic\">\/\/ Arrow marker<\/span>\r\n    path: <span style=\"color: #d14\">\"M14.5,29 23.5,0 14.5,9 5.5,0z\"<\/span>,\r\n    color: [<span style=\"color: #008080\">50<\/span>, <span style=\"color: #008080\">50<\/span>, <span style=\"color: #008080\">50<\/span>],\r\n    outline: {\r\n      color: [<span style=\"color: #008080\">0<\/span>, <span style=\"color: #008080\">0<\/span>, <span style=\"color: #008080\">0<\/span>, <span style=\"color: #008080\">0.7<\/span>],\r\n      width: <span style=\"color: #008080\">0.5<\/span>\r\n    },\r\n    angle: <span style=\"color: #008080\">180<\/span>,\r\n    size: <span style=\"color: #008080\">15<\/span>\r\n  },\r\n  visualVariables: [\r\n    {\r\n      type: <span style=\"color: #d14\">\"rotation\"<\/span>,\r\n      <span style=\"color: #998;font-style: italic\">\/\/ Use {cluster_avg_WIND_DIRECT} in the<\/span>\r\n      <span style=\"color: #998;font-style: italic\">\/\/ featureReduction.popupTemplate to<\/span>\r\n      <span style=\"color: #998;font-style: italic\">\/\/ display the average temperature of all<\/span>\r\n      <span style=\"color: #998;font-style: italic\">\/\/ features within the cluster<\/span>\r\n      field: <span style=\"color: #d14\">\"WIND_DIRECT\"<\/span>,\r\n      rotationType: <span style=\"color: #d14\">\"geographic\"<\/span>\r\n    },\r\n    {\r\n      type: <span style=\"color: #d14\">\"size\"<\/span>,\r\n      <span style=\"color: #998;font-style: italic\">\/\/ Use {cluster_avg_WIND_SPEED} in the<\/span>\r\n      <span style=\"color: #998;font-style: italic\">\/\/ featureReduction.popupTemplate to<\/span>\r\n      <span style=\"color: #998;font-style: italic\">\/\/ display the average temperature of all<\/span>\r\n      <span style=\"color: #998;font-style: italic\">\/\/ features within the cluster<\/span>\r\n      field: <span style=\"color: #d14\">\"WIND_SPEED\"<\/span>,\r\n      minDataValue: <span style=\"color: #008080\">0<\/span>,\r\n      maxDataValue: <span style=\"color: #008080\">60<\/span>,\r\n      minSize: <span style=\"color: #008080\">8<\/span>,\r\n      maxSize: <span style=\"color: #008080\">40<\/span>\r\n    },\r\n    {\r\n      type: <span style=\"color: #d14\">\"color\"<\/span>,\r\n      <span style=\"color: #998;font-style: italic\">\/\/ Use {cluster_avg_TEMP} in the<\/span>\r\n      <span style=\"color: #998;font-style: italic\">\/\/ featureReduction.popupTemplate to<\/span>\r\n      <span style=\"color: #998;font-style: italic\">\/\/ display the average temperature of all<\/span>\r\n      <span style=\"color: #998;font-style: italic\">\/\/ features within the cluster<\/span>\r\n      field: <span style=\"color: #d14\">\"TEMP\"<\/span>,\r\n      stops: [\r\n        { value: <span style=\"color: #008080\">20<\/span>, color: <span style=\"color: #d14\">\"#2b83ba\"<\/span> },\r\n        { value: <span style=\"color: #008080\">35<\/span>, color: <span style=\"color: #d14\">\"#abdda4\"<\/span> },\r\n        { value: <span style=\"color: #008080\">50<\/span>, color: <span style=\"color: #d14\">\"#ffffbf\"<\/span> },\r\n        { value: <span style=\"color: #008080\">65<\/span>, color: <span style=\"color: #d14\">\"#fdae61\"<\/span> },\r\n        { value: <span style=\"color: #008080\">80<\/span>, color: <span style=\"color: #d14\">\"#d7191c\"<\/span> }\r\n      ]\r\n    }\r\n  ]\r\n};\r\n\r\n<span style=\"color: #998;font-style: italic\">\/\/ Configures clustering on the layer including<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ a popupTemplate referring to aggregate fields<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ that summarize the values of the fields used<\/span>\r\n<span style=\"color: #998;font-style: italic\">\/\/ to render the cluster graphics.<\/span>\r\n\r\n<span style=\"color: #333;font-weight: bold\">const<\/span> clusterConfig = {\r\n  type: <span style=\"color: #d14\">\"cluster\"<\/span>,\r\n  popupTemplate: {\r\n    content: [\r\n      {\r\n        type: <span style=\"color: #d14\">\"text\"<\/span>,\r\n        text: <span style=\"color: #d14\">\"This cluster represents &lt;b&gt;{cluster_count}&lt;\/b&gt; weather stations.\"<\/span>\r\n      },\r\n      {\r\n        type: <span style=\"color: #d14\">\"fields\"<\/span>,\r\n        fieldInfos: [\r\n          {\r\n            fieldName: <span style=\"color: #d14\">\"cluster_avg_WIND_SPEED\"<\/span>,\r\n            label: <span style=\"color: #d14\">\"Average wind speed (km\/h)\"<\/span>,\r\n            format: {\r\n              places: <span style=\"color: #008080\">0<\/span>\r\n            }\r\n          },\r\n          {\r\n            fieldName: <span style=\"color: #d14\">\"cluster_avg_WIND_DIRECT\"<\/span>,\r\n            label: <span style=\"color: #d14\">\"Average wind direction (degrees)\"<\/span>,\r\n            format: {\r\n              places: <span style=\"color: #008080\">0<\/span>\r\n            }\r\n          },\r\n          {\r\n            fieldName: <span style=\"color: #d14\">\"cluster_avg_TEMP\"<\/span>,\r\n            label: <span style=\"color: #d14\">\"Average temperature (\u00b0F)\"<\/span>,\r\n            format: {\r\n              places: <span style=\"color: #008080\">0<\/span>\r\n            }\r\n          }\r\n        ]\r\n      }\r\n    ]\r\n  }\r\n};\r\n\r\n<span style=\"color: #333;font-weight: bold\">const<\/span> layer = <span style=\"color: #333;font-weight: bold\">new<\/span> FeatureLayer({\r\n  portalItem: {\r\n    id: <span style=\"color: #d14\">\"cb1886ff0a9d4156ba4d2fadd7e8a139\"<\/span>\r\n  },\r\n  renderer: renderer,\r\n  featureReduction: clusterConfig\r\n});\r\n<\/code><\/pre>\n<\/details>\n"},{"acf_fc_layout":"image","image":{"ID":690232,"id":690232,"title":"clustering-numbers-popup","filename":"clustering-numbers-popup-e1577818864349.png","filesize":146019,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-numbers-popup-e1577818864349.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api\/clustering-numbers-popup","alt":"Weather stations in the United States visualized in clusters as arrow markers. Each arrow is colored, sized, and rotated based on three variables: temperature, wind speed, and wind direction. An open popup displays the averages for each of these variables along with the total number of features inside one of the clusters.","author":"6561","description":"","caption":"Clustered weather stations in the United States. The popup displays the average value of all fields used by the renderer: temperature (color), wind speed (size), and wind direction (rotation).","name":"clustering-numbers-popup","status":"inherit","uploaded_to":686592,"date":"2019-12-31 00:05:13","modified":"2019-12-31 17:23:31","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":700,"height":354,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-numbers-popup-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-numbers-popup-e1577818864349.png","medium-width":464,"medium-height":235,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-numbers-popup-e1577818864349.png","medium_large-width":700,"medium_large-height":354,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-numbers-popup-e1577818864349.png","large-width":700,"large-height":354,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-numbers-popup-e1577818864349.png","1536x1536-width":700,"1536x1536-height":354,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-numbers-popup-e1577818864349.png","2048x2048-width":700,"2048x2048-height":354,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-numbers-popup-826x418.png","card_image-width":826,"card_image-height":418,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-numbers-popup-e1577818864349.png","wide_image-width":700,"wide_image-height":354}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/featurereduction-cluster-visualvariables\/index.html"},{"acf_fc_layout":"content","content":"<h2>Unique values<\/h2>\n<p>When a layer contains a <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-UniqueValueRenderer.html\">UniqueValueRenderer<\/a>, the clustered graphics are rendered with the symbol of the most common <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-UniqueValueRenderer.html#uniqueValueInfos\">unique value<\/a> of the features represented by the cluster.<\/p>\n<details>\n<summary>\n    <strong>View the code that makes this sample work<\/strong><br \/>\n  <\/summary>\n<pre><code style=\"padding: 0.5em;color: #333;background: #f8f8f8\"><span style=\"color: #998;font-style: italic\">\/\/ Enable clustering on the layer<\/span>\r\n\r\n<span style=\"color: #333;font-weight: bold\">const<\/span> clusterConfig = {\r\n  type: <span style=\"color: #d14\">\"cluster\"<\/span>,\r\n  popupTemplate: {\r\n    content: [\r\n      {\r\n        type: <span style=\"color: #d14\">\"text\"<\/span>,\r\n        text: <span style=\"color: #d14\">\"This cluster represents &lt;b&gt;{cluster_count}&lt;\/b&gt; features.\"<\/span>\r\n      },\r\n      {\r\n        type: <span style=\"color: #d14\">\"text\"<\/span>,\r\n        <span style=\"color: #998;font-style: italic\">\/\/ layer.renderer.field = \"religion\"<\/span>\r\n        text: <span style=\"color: #d14\">\"The predominant place of worship in this cluster is &lt;b&gt;{cluster_type_religion}&lt;\/b&gt;.\"<\/span>\r\n      }\r\n    ]\r\n  }\r\n};\r\n\r\n<span style=\"color: #333;font-weight: bold\">const<\/span> renderer = {\r\n  type: <span style=\"color: #d14\">\"unique-value\"<\/span>,\r\n  <span style=\"color: #998;font-style: italic\">\/\/ Aggregate field for the popup becomes<\/span>\r\n  <span style=\"color: #998;font-style: italic\">\/\/ {cluster_type_religion}<\/span>\r\n  field: <span style=\"color: #d14\">\"religion\"<\/span>,\r\n  uniqueValueInfos: [\r\n    <span style=\"color: #998;font-style: italic\">\/\/ defines a unique symbol for each<\/span>\r\n    <span style=\"color: #998;font-style: italic\">\/\/ type of religion in the layer<\/span>\r\n  ]\r\n}\r\n\r\n<span style=\"color: #333;font-weight: bold\">const<\/span> serviceUrl = <span style=\"color: #d14\">\"https:\/\/services.arcgis.com\/V6ZHFr6zdgNZuVG0\/arcgis\/rest\/services\/Places_of_Worship_India\/FeatureServer\/0\"<\/span>;\r\n<span style=\"color: #333;font-weight: bold\">const<\/span> layer = <span style=\"color: #333;font-weight: bold\">new<\/span> FeatureLayer({\r\n  url: serviceUrl,\r\n  title: <span style=\"color: #d14\">\"Places of worship\"<\/span>,\r\n  outFields: [<span style=\"color: #d14\">\"name\"<\/span>, <span style=\"color: #d14\">\"religion\"<\/span>, <span style=\"color: #d14\">\"denomination\"<\/span>],\r\n  featureReduction: clusterConfig,\r\n  renderer: renderer,\r\n  popupTemplate: {\r\n    title: <span style=\"color: #d14\">\"{name}\"<\/span>,\r\n    content: [\r\n      {\r\n        type: <span style=\"color: #d14\">\"fields\"<\/span>,\r\n        fieldInfos: [\r\n          {\r\n            fieldName: <span style=\"color: #d14\">\"religion\"<\/span>\r\n          },\r\n          {\r\n            fieldName: <span style=\"color: #d14\">\"denomination\"<\/span>\r\n          }\r\n        ]\r\n      }\r\n    ]\r\n  }\r\n});\r\n<\/code><\/pre>\n<\/details>\n"},{"acf_fc_layout":"image","image":{"ID":690262,"id":690262,"title":"clustering-popup-types","filename":"clustering-popup-types-e1577818879888.png","filesize":263722,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-types-e1577818879888.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api\/clustering-popup-types","alt":"Places of worship in India visualized in clusters. Each point is colored based on the most common religion type in the cluster. An open popup displays this information along with the total number of features inside one of the clusters.","author":"6561","description":"","caption":"Clustered places of worship in India. The popup displays the number of features in each cluster and the most common type as defined by the renderer.","name":"clustering-popup-types","status":"inherit","uploaded_to":686592,"date":"2019-12-31 00:11:37","modified":"2019-12-31 17:24: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":700,"height":503,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-types-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-types-e1577818879888.png","medium-width":363,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-types-e1577818879888.png","medium_large-width":700,"medium_large-height":503,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-types-e1577818879888.png","large-width":700,"large-height":503,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-types-e1577818879888.png","1536x1536-width":700,"1536x1536-height":503,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-types-e1577818879888.png","2048x2048-width":700,"2048x2048-height":503,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-types-647x465.png","card_image-width":647,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering-popup-types-e1577818879888.png","wide_image-width":700,"wide_image-height":503}},"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>Improvements from 3.x clustering<\/h2>\n<p>You may have already picked up on a few improvements from the 3.x implementation of clustering. Some highlights include: <\/p>\n<ul>\n<li><strong>Cluster more data<\/strong>: While 3.x had a limitation of clustering a maximum of 50,000 features, 4.x doesn\u2019t have such a limit. You can cluster all data that can be loaded into your app.<\/li>\n<li><strong>Faster filtering<\/strong>: You can use the same <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/featurereduction-cluster-filter-slider\/index.html\">fast client-side filters on clustered layers<\/a> as you can on unclustered layers in 4.x. Clusters are automatically recomputed client-side without needing to refetch the data. In 3.x you&#8217;re limited to filtering data with the <code>definitionExpression<\/code>. This refetches data from the service, which doesn&#8217;t have the same level of interactivity as client-side filters.\n <\/li>\n<li><strong>GeoJSON layers<\/strong>: Since the GeoJSON layer is a first-class citizen in 4.x, you can now enable clustering in the same way that you would with a feature layer.<\/li>\n<li><strong>Multiple projections<\/strong>: 4.x has experimental support for more projections than just Web Mercator and WGS 84. Those were the only supported spatial references in the 3.x implementation of clustering.<\/li>\n<\/ul>\n"},{"acf_fc_layout":"image","image":{"ID":682872,"id":682872,"title":"client-side filtering and point clustering","filename":"clustering3.gif","filesize":514643,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering3.gif","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/product\/announcements\/whats-new-in-arcgis-api-for-javascript-december-2019\/clustering3","alt":"Animation showing power plants in Europe clustered by fuel type. As the user slides the slider thumb, the clusters change in color and size, reflecting the features complying with the underlying filter.","author":"4271","description":"","caption":"Clustered power plants in Europe visualized by fuel type. When a client-side filter is applied to the layer view, clusters are immediately recomputed, summarizing the number and predominant type of power generating stations that satisfy the filter criteria.","name":"clustering3","status":"inherit","uploaded_to":669642,"date":"2019-12-16 23:18:48","modified":"2019-12-31 00:26:49","menu_order":0,"mime_type":"image\/gif","type":"image","subtype":"gif","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":825,"height":353,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering3-213x200.gif","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering3.gif","medium-width":464,"medium-height":199,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering3.gif","medium_large-width":768,"medium_large-height":329,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering3.gif","large-width":825,"large-height":353,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering3.gif","1536x1536-width":825,"1536x1536-height":353,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering3.gif","2048x2048-width":825,"2048x2048-height":353,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering3.gif","card_image-width":825,"card_image-height":353,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/clustering3.gif","wide_image-width":825,"wide_image-height":353}},"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":"<h2>Coming soon<\/h2>\n<p>Remember, <strong>clustering is in beta<\/strong>! We&#8217;re seeking <a href=\"https:\/\/community.esri.com\/community\/developers\/web-developers\/arcgis-api-for-javascript\">feedback<\/a> on improvements in this latest implementation. Some things we currently don&#8217;t support, but are working hard to add soon include:<\/p>\n<ul>\n<li><strong>Arcade expressions<\/strong> &#8211; We&#8217;ll add support for layers with renderers containing at least one <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/arcade\/index.html\">valueExpression<\/a> (i.e. Arcade expression) in the renderer or visual variable. This includes <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-smartMapping-creators-predominance.html\">predominance<\/a>, <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-smartMapping-creators-relationship.html\">relationship<\/a>, and <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-smartMapping-creators-color.html#createAgeRenderer\">age<\/a> renderers created from the smart mapping creator methods.<\/li>\n<li><strong>Labels<\/strong> &#8211; Currently clusters cannot be labeled with the total count of features comprising the cluster nor any other aggregate information known by the cluster.<\/li>\n<li><strong>Auto-generated popup templates<\/strong> &#8211; The popupTemplate is not generated by default (this is the default in 3.x). We&#8217;re working on adding helper functions for creating good default popup templates for clustered layers.<\/li>\n<li><strong>Full spatial reference support<\/strong> &#8211; Clustering layers with spatial references other than Web Mercator and WGS 84 is experimental and may not work for every projection. We&#8217;re hoping to stabilize support for all our spatial references.<\/li>\n<\/ul>\n<p>Thanks for reading! Be sure to explore the samples <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/sample-code\/featurereduction-cluster\/index.html?search=clustering\">in more depth<\/a> and try out clustering on your own layers.<\/p>\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":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":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"},{"ID":669642,"post_author":"4271","post_date":"2019-12-19 11:10:21","post_date_gmt":"2019-12-19 19:10:21","post_content":"","post_title":"What's New in ArcGIS API for JavaScript (December 2019)","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"whats-new-in-arcgis-api-for-javascript-december-2019","to_ping":"","pinged":"","post_modified":"2019-12-19 11:10:21","post_modified_gmt":"2019-12-19 19:10:21","post_content_filtered":"","post_parent":0,"guid":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=669642","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"}],"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/banner-1.png","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/banner-2.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>Point clustering now available in ArcGIS JavaScript 4.x API<\/title>\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\/point-clustering-now-available-in-arcgis-javascript-4-x-api\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Visualize and explore your point data using clusters\" \/>\n<meta property=\"og:description\" content=\"Clustering allows you to summarize and explore point layers into spatial clusters.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api\" \/>\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-01-07T16:02:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.esri.com\/arcgis-blog\/wp-content\/uploads\/2019\/12\/cluster-social.png\" \/>\n\t<meta property=\"og:image:width\" content=\"774\" \/>\n\t<meta property=\"og:image:height\" content=\"501\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:title\" content=\"Visualize and explore your point data using clusters\" \/>\n<meta name=\"twitter:description\" content=\"Clustering allows you to summarize and explore point layers into spatial clusters.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/cluster-social.png\" \/>\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\/point-clustering-now-available-in-arcgis-javascript-4-x-api#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api\"},\"author\":{\"name\":\"Kristian Ekenes\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5469f723fbfb78138efbb1da56e6aa9b\"},\"headline\":\"Point clustering now available in ArcGIS JavaScript 4.x API\",\"datePublished\":\"2020-01-07T16:00:08+00:00\",\"dateModified\":\"2020-01-07T16:02:58+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api\"},\"wordCount\":9,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"clustering\",\"data visualization\",\"whats new december 2019\"],\"articleSection\":[\"Mapping\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api\",\"name\":\"Point clustering now available in ArcGIS JavaScript 4.x API\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2020-01-07T16:00:08+00:00\",\"dateModified\":\"2020-01-07T16:02:58+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Point clustering now available in ArcGIS JavaScript 4.x API\"}]},{\"@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":"Point clustering now available in ArcGIS JavaScript 4.x API","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\/point-clustering-now-available-in-arcgis-javascript-4-x-api","og_locale":"en_US","og_type":"article","og_title":"Visualize and explore your point data using clusters","og_description":"Clustering allows you to summarize and explore point layers into spatial clusters.","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2020-01-07T16:02:58+00:00","og_image":[{"width":774,"height":501,"url":"https:\/\/www.esri.com\/arcgis-blog\/wp-content\/uploads\/2019\/12\/cluster-social.png","type":"image\/png"}],"twitter_card":"summary_large_image","twitter_title":"Visualize and explore your point data using clusters","twitter_description":"Clustering allows you to summarize and explore point layers into spatial clusters.","twitter_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/cluster-social.png","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api"},"author":{"name":"Kristian Ekenes","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5469f723fbfb78138efbb1da56e6aa9b"},"headline":"Point clustering now available in ArcGIS JavaScript 4.x API","datePublished":"2020-01-07T16:00:08+00:00","dateModified":"2020-01-07T16:02:58+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api"},"wordCount":9,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["clustering","data visualization","whats new december 2019"],"articleSection":["Mapping"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api","name":"Point clustering now available in ArcGIS JavaScript 4.x API","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2020-01-07T16:00:08+00:00","dateModified":"2020-01-07T16:02:58+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/point-clustering-now-available-in-arcgis-javascript-4-x-api#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Point clustering now available in ArcGIS JavaScript 4.x API"}]},{"@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":"January 7, 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\/2019\/12\/banner-2.png","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":515732,"name":"whats new december 2019","slug":"whats-new-december-2019","term_group":0,"term_taxonomy_id":515732,"taxonomy":"post_tag","description":"","parent":0,"count":15,"filter":"raw"}],"category_data":[{"term_id":22941,"name":"Mapping","slug":"mapping","term_group":0,"term_taxonomy_id":22941,"taxonomy":"category","description":"","parent":0,"count":2696,"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":765,"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\/686592","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=686592"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/686592\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=686592"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=686592"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=686592"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=686592"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=686592"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}