{"id":74681,"date":"2016-12-21T11:15:56","date_gmt":"2016-12-21T11:15:56","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/arcgis-api-for-javascript-3-19-released\/"},"modified":"2018-04-13T15:54:36","modified_gmt":"2018-04-13T15:54:36","slug":"arcgis-api-for-javascript-3-19-released","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released","title":{"rendered":"ArcGIS API for JavaScript 3.19 released"},"author":4811,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[37101],"tags":[24921,31311,23571,32461],"industry":[],"product":[36831,36601],"class_list":["post-74681","blog","type-blog","status-publish","format-standard","hentry","category-announcements","tag-javascript","tag-jsapi3","tag-whats-new","tag-whats-new-december-2016","product-js-api-arcgis","product-developers"],"acf":{"short_description":"The ArcGIS API for JavaScript 3.19 is now available, allowing you to write Arcade expressions for custom visualizations and labels, and ...","flexible_content":[{"acf_fc_layout":"content","content":"<p>The ArcGIS API for JavaScript 3.19 is now available, allowing you to write <a href=\"https:\/\/developers.arcgis.com\/javascript\/3\/jshelp\/arcade.html\">Arcade expressions<\/a> for custom visualizations and labels, and to consume vector tiles in any supported ArcGIS spatial reference.<\/p>\n<p><!--more--><\/p>\n<h1>Arcade integration for visualization and labeling<\/h1>\n<p><a href=\"https:\/\/developers.arcgis.com\/javascript\/3\/jshelp\/arcade.html\">Arcade<\/a> is a lightweight expression language designed for creating custom content, visualizations, and labels across the ArcGIS platform. In the 3.19 release of the API, Arcade may be used for creating custom data-driven visualizations and labeling. Field values are treated as global variables in Arcade expressions and may be accessed using the following syntax: <code>$feature.FIELD_NAME<\/code>. Arcade comes equipped with its <a href=\"https:\/\/developers.arcgis.com\/arcade\/function-reference\/\">own library of functions<\/a> that allow users to do simple math calculations and text formatting.<\/p>\n<p><strong>Visualization<\/strong><\/p>\n<p>Rather than drive visualizations based on the value of a layer&#8217;s field, users now can pass an expression to renderers and visual variables. The expression will execute for each feature, generating a symbol based on the returned value. This is convenient when a service doesn&#8217;t have the exact values you need. To leverage Arcade in renderers, you must pass it as a string to the <code>valueExpression<\/code> property of the renderer or visual variable.<\/p>\n<p><a href=\"https:\/\/developers.arcgis.com\/javascript\/3\/jssamples\/renderer_arcade.html\"><img decoding=\"async\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2016\/12\/renderer-arcade.png\" alt=\"image\" \/><\/a><\/p>\n<p>The following snippet demonstrates how you can write an Arcade expression showing the share of the vote earned in an election by the winner for each geography in the layer.<\/p>\n<pre><code> <span style=\"color: #998; font-style: italic;\">\/\/ CANDIDATE1 and CANDIDATE2 are field values<\/span>\r\n <span style=\"color: #333; font-weight: bold;\">var<\/span> arcade = <span style=\"color: #d14;\">\"var votes = [$feature.CANDIDATE1, $feature.CANDIDATE2];\"<\/span>\r\n   <span style=\"color: #998; font-style: italic;\">\/\/ Sum() and Max() are built-in Arcade functions<\/span>\r\n   + <span style=\"color: #d14;\">\"return ( Max(votes) \/ Sum(votes) ) * 100;\"<\/span>;\r\n renderer.setVisualVariables([{\r\n   type: <span style=\"color: #d14;\">\"colorInfo\"<\/span>,\r\n   valueExpression: arcade,  <span style=\"color: #998; font-style: italic;\">\/\/ valueExpression points to the Arcade expression<\/span>\r\n   valueExpressionTitle: <span style=\"color: #d14;\">\"Share of winner's votes\"<\/span>,\r\n   stops: [ ... ]\r\n }]);\r\n<\/code><\/pre>\n<p><strong>Labeling<\/strong><\/p>\n<p>Arcade may also be used to label features in a FeatureLayer. This is handled in the <code>expression<\/code> property of the <a href=\"https:\/\/developers.arcgis.com\/javascript\/3\/jsapi\/labelclass-amd.html#labelexpressioninfo\">labelExpressionInfo<\/a> object of the <a href=\"https:\/\/developers.arcgis.com\/javascript\/3\/jsapi\/labelclass-amd.html\">LabelClass<\/a>.<\/p>\n<p><a href=\"https:\/\/developers.arcgis.com\/javascript\/3\/jssamples\/labels_arcade.html\"><img decoding=\"async\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2016\/12\/labels-arcade.png\" alt=\"image\" \/><\/a><\/p>\n<p>The snippet below demonstrates how to label features with only the value of a field in the layer. Remember to use the <code>expression<\/code> property of the <code>labelExpressionInfo<\/code> object; the value property will not understand the Arcade expression.<\/p>\n<pre><code><span style=\"color: #998; font-style: italic;\">\/\/ returns the value of a field in the layer<\/span>\r\n<span style=\"color: #998; font-style: italic;\">\/\/ the value of this field will be the label for each feature<\/span>\r\n<span style=\"color: #333; font-weight: bold;\">var<\/span> arcade = <span style=\"color: #d14;\">\"$feature.STATION_NAME\"<\/span>\r\n<span style=\"color: #998; font-style: italic;\">\/\/ set the arcade expression to the `expression` property of labelExpressionInfo<\/span>\r\n<span style=\"color: #333; font-weight: bold;\">var<\/span> labelClass = <span style=\"color: #333; font-weight: bold;\">new<\/span> LabelClass({\r\n  labelExpressionInfo: {\r\n    expression: arcade\r\n  },\r\n  labelPlacement: <span style=\"color: #d14;\">\"below-right\"<\/span>,\r\n  minScale: <span style=\"color: #008080;\">2500000<\/span>\r\n});\r\nnameClass.symbol = <span style=\"color: #333; font-weight: bold;\">new<\/span> TextSymbol()\r\n<span style=\"color: #998; font-style: italic;\">\/\/ set the label class to the feature layer<\/span>\r\nfeatureLayer.setLabelingInfo([ labelClass ]);\r\n<\/code><\/pre>\n<p>Take a look at the <a href=\"https:\/\/developers.arcgis.com\/javascript\/3\/jssamples\/labels_arcade.html\">Label features using Arcade expressions<\/a> sample to see examples of various Arcade expressions used in the labeling context.<\/p>\n<p>Arcade is convenient for a number of reasons, including providing the ability to save expressions to layer items and web maps in <a href=\"https:\/\/arcgis.com\/\">ArcGIS Online<\/a> or Portal for ArcGIS. That means expressions can be authored in apps and persisted in webmaps throughout the ArcGIS platform.<\/p>\n<p>Be sure to read the <a href=\"https:\/\/developers.arcgis.com\/arcade\/\">full Arcade documentation<\/a> for details about its syntax and the <a href=\"https:\/\/developers.arcgis.com\/javascript\/3\/jshelp\/arcade.html\">Arcade guide page<\/a> for more examples of its usage within the API.<\/p>\n<h1>VectorTileLayer enhancements<\/h1>\n<p>This release of the JavaScript API includes support for vector tiles in any ArcGIS-supported spatial reference. You can publish vector tile layers by building packages that can then be published to Portal for ArcGIS or ArcGIS Online. Users then can bring these layers into their web apps.<\/p>\n<p><a href=\"https:\/\/developers.arcgis.com\/javascript\/3\/jssamples\/layers_vector.html\"><img decoding=\"async\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2016\/12\/layers-vector-arabic.png\" alt=\"image\" \/><\/a><\/p>\n<p><strong>North Korea Missile Azimuthal Equidistant<\/strong><br \/>\n<a href=\"https:\/\/jsapi.maps.arcgis.com\/home\/item.html?id=37987b0f86fc465d9b1b3350d2f1e3a0\"><img decoding=\"async\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2016\/12\/layers-vectortilelayer-missile.png\" alt=\"image\" \/><\/a><\/p>\n<p><strong>North Korea Missile Web Mercator<\/strong><br \/>\n<a href=\"https:\/\/jsapi.maps.arcgis.com\/home\/item.html?id=e31f3490fa0e41c3b1c822c31662c602\"><img decoding=\"async\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2016\/12\/layers-vector-missile-mercator.png\" alt=\"image\" \/><\/a><\/p>\n<p>Check out the <a href=\"https:\/\/developers.arcgis.com\/javascript\/3\/jshelp\/whats_new.html\">3.19 what&#8217;s new<\/a> for additional information about upgrades to other resources and a more detailed listing of API enhancements. For an overview on what was released with 4.2, check out this <a href=\"https:\/\/blogs.esri.com\/esri\/arcgis\/2016\/12\/21\/arcgis-api-for-javascript-4-2-released\/\">blog announcement<\/a>.<\/p>\n"}],"authors":[{"ID":4811,"user_firstname":"Bjorn","user_lastname":"Svensson","nickname":"bjorn","user_nicename":"bjorn","display_name":"Bj\u00f6rn Svensson","user_email":"bsvensson@esri.com","user_url":"https:\/\/developers.arcgis.com\/javascript\/","user_registered":"2018-03-02 00:16:26","user_description":"20+ years of experience with web mapping. Currently lead project engineer for the ArcGIS Maps SDK for JavaScript development team at Esri.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Bjorn_Svensson_beard_squarish_2000.png' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"},{"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":"","card_image":false,"wide_image":false},"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>ArcGIS API for JavaScript 3.19 released<\/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\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"ArcGIS API for JavaScript 3.19 released\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released\" \/>\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=\"2018-04-13T15:54:36+00:00\" \/>\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\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released\"},\"author\":{\"name\":\"Bj\u00f6rn Svensson\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/040d356e9dba00b43944aa2d41f17d99\"},\"headline\":\"ArcGIS API for JavaScript 3.19 released\",\"datePublished\":\"2016-12-21T11:15:56+00:00\",\"dateModified\":\"2018-04-13T15:54:36+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released\"},\"wordCount\":5,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"JavaScript\",\"jsapi3\",\"what's new\",\"what's new december 2016\"],\"articleSection\":[\"Announcements\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released\",\"name\":\"ArcGIS API for JavaScript 3.19 released\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2016-12-21T11:15:56+00:00\",\"dateModified\":\"2018-04-13T15:54:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"ArcGIS API for JavaScript 3.19 released\"}]},{\"@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\/040d356e9dba00b43944aa2d41f17d99\",\"name\":\"Bj\u00f6rn Svensson\",\"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\/2018\/04\/Bjorn_Svensson_beard_squarish_2000.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Bjorn_Svensson_beard_squarish_2000.png\",\"caption\":\"Bj\u00f6rn Svensson\"},\"description\":\"20+ years of experience with web mapping. Currently lead project engineer for the ArcGIS Maps SDK for JavaScript development team at Esri.\",\"sameAs\":[\"https:\/\/developers.arcgis.com\/javascript\/\",\"https:\/\/x.com\/bjorn_svensson\"],\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/bjorn\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"ArcGIS API for JavaScript 3.19 released","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\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released","og_locale":"en_US","og_type":"article","og_title":"ArcGIS API for JavaScript 3.19 released","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2018-04-13T15:54:36+00:00","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\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released"},"author":{"name":"Bj\u00f6rn Svensson","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/040d356e9dba00b43944aa2d41f17d99"},"headline":"ArcGIS API for JavaScript 3.19 released","datePublished":"2016-12-21T11:15:56+00:00","dateModified":"2018-04-13T15:54:36+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released"},"wordCount":5,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["JavaScript","jsapi3","what's new","what's new december 2016"],"articleSection":["Announcements"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released","name":"ArcGIS API for JavaScript 3.19 released","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2016-12-21T11:15:56+00:00","dateModified":"2018-04-13T15:54:36+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"ArcGIS API for JavaScript 3.19 released"}]},{"@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\/040d356e9dba00b43944aa2d41f17d99","name":"Bj\u00f6rn Svensson","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\/2018\/04\/Bjorn_Svensson_beard_squarish_2000.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Bjorn_Svensson_beard_squarish_2000.png","caption":"Bj\u00f6rn Svensson"},"description":"20+ years of experience with web mapping. Currently lead project engineer for the ArcGIS Maps SDK for JavaScript development team at Esri.","sameAs":["https:\/\/developers.arcgis.com\/javascript\/","https:\/\/x.com\/bjorn_svensson"],"url":"https:\/\/www.esri.com\/arcgis-blog\/author\/bjorn"}]}},"text_date":"December 21, 2016","author_name":"Multiple Authors","author_page":"https:\/\/www.esri.com\/arcgis-blog\/products\/announcements\/announcements\/arcgis-api-for-javascript-3-19-released","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Newsroom-Keyart-Wide-1920-x-1080.jpg","primary_product":"ArcGIS Maps SDK for JavaScript","tag_data":[{"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":31311,"name":"jsapi3","slug":"jsapi3","term_group":0,"term_taxonomy_id":31311,"taxonomy":"post_tag","description":"","parent":0,"count":19,"filter":"raw"},{"term_id":23571,"name":"what's new","slug":"whats-new","term_group":0,"term_taxonomy_id":23571,"taxonomy":"post_tag","description":"","parent":0,"count":599,"filter":"raw"},{"term_id":32461,"name":"what's new december 2016","slug":"whats-new-december-2016","term_group":0,"term_taxonomy_id":32461,"taxonomy":"post_tag","description":"","parent":0,"count":24,"filter":"raw"}],"category_data":[{"term_id":37101,"name":"Announcements","slug":"announcements","term_group":0,"term_taxonomy_id":37101,"taxonomy":"category","description":"","parent":0,"count":2033,"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":365,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":776,"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\/74681","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\/4811"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=74681"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/74681\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=74681"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=74681"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=74681"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=74681"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=74681"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}