Release notes for 4.7

Topics

WebGL rendering updates

  • FeatureLayer performance continues to improve, allowing you to load features more efficiently and navigate the view more seamlessly.
  • FeatureLayerView can now be queried when WebGL is enabled.
  • TextSymbol is now supported with FeatureLayers. This includes support for multi-line text.

Client-side projection

The new projection module provides an engine for converting geometries from one spatial reference to another client-side. To see how this is done, please refer to the Client-side projection sample. The browser must support WebAssembly for the client-side engine to work. The new Coordinate Conversion widget and Coordinate formatter module takes advantage of this functionality.

client-side projecton

Mobile support in 3D

WebScenes are now supported on modern mobile devices enabling developers to build 3D web applications that can be used on phones or tablets without needing to install an app. See Hardware requirements for 3D for more information on supported devices.

mobile-support

Edge rendering for 3D Object SceneLayer

Perception of object shapes in 3D is now improved by rendering contour edges of buildings and extruded polygons. The new edge properties on FillSymbol3DLayer within MeshSymbol3D and on ExtrudeSymbol3DLayer within PolygonSymbol3D can be used to activate edge rendering and to set the color of the edges. Edges can have two different styles: SolidEdges or SketchEdges3D for lines that should look more hand-drawn.

symbol3D-edges

Widget updates

Coordinate Conversion widget

The CoordinateConversion widget provides a way to display user cursor position either as map coordinates or as any of several popular coordinate notations. To see this widget in action, please refer to the CoordinateConversion widget and CoordinateConversion widget - Custom Formats samples.

coordinate-conversion

3D Area Measurement widget

Areas can be measured in 3D using the AreaMeasurement3D widget. To see how to use this widget or the DirectLineMeasurement3D widget, see the Measurement in 3D sample.

measurement-area-3d

Legend widget card style

The Legend widget now has a style property allowing you to toggle between two different views of the widget. We added support for a new card style, which displays widget content in a fresh, different way.

new-legend

The card style is also responsive, collapsing to a different layout depending on the view size. This makes it an ideal style for mobile devices.

new-legend

LayerList updates

We added support for panels in the LayerList widget. This allows you to add custom content to a layer's list item, including: widgets, text, and DOM elements specific to the application. Check out these samples, which demonstrate how to add additional content types to LayerList panels:

layerlist-chart

We removed the createActionsFunction property from LayerList and LayerListViewModel classes. This is a breaking change. Use listItemCreatedFunction instead.

Draw updates

sketch-update

Custom builds with npm and webpacks

You can now use both npm and webpacks to create custom builds of the ArcGIS API for JavaScript. This allows you to take advantage of modern web development tooling to build your web applications. See the Using npm for Custom Builds guide page, and the Using Webpack for Custom Builds guide page for more information.

Better support for ES promises

This release improves our compatibility with ES Promises. Prior to 4.7, the WebMap, WebScene, MapView, SceneView, Basemap, Ground, Layer, and LayerView classes were not compatible with ES Promises. At this release, we make the API compatible by default. This is a breaking change. Please read this blog post to learn more about how to make your code compatible with these updates.

Smart Mapping updates

The Smart Mapping renderer creator methods now support generating renderers with the following:

Arcade expressions are referenced with the new valueExpression parameter in each of the creator methods.

sm-arcade

FeatureLayer updates

  • FeatureLayer can now be constructed with dynamic data sources (with data either from map service sublayers or data from a registered workspace) by passing the appropriate data source to the dynamicDataSource property.
  • FeatureLayers pointing to dynamic data sources can also be conveniently created using the createFeatureLayer() method on a Sublayer instance already containing the same configuration. See the MapImageLayer - Explore data from a dynamic workspace sample for an example of the createFeatureLayer() method.

CSVLayer updates

CSVLayer can now be rendered using WebGL. This allows you to render more data in the browser and update the visualization of features more rapidly. To enable WebGL for rendering CSVLayer (and FeatureLayer), paste the following script in your application prior to loading the ArcGIS API for JavaScript.

<script>
  var dojoConfig = {
    has: {
      "esri-featurelayer-webgl": 1
    }
  }
</script>

This CSV sample demonstrates how to enable WebGL rendering for a CSVLayer.

csv layer

Other CSVLayer updates include:

  • Added support for definitionExpression, allowing you to filter data directly on the layer.
  • Added support for querying features and statistics on the layer instance.
  • You can now generate renderers for CSVLayer with the Smart Mapping modules.

Mesh geometry

Mesh geometry is a new type of geometry, similar to point, polyline and polygon. It allows users to create 3D geographical objects by directly manipulating vertices, connecting them into faces and mapping corresponding textures. See the Low poly terrain using mesh geometry and Working with 3D mesh primitives to understand how to use it.

mesh-geometry-elevation

Thumbnails for attachments in popup

For services that support it, and supported file types, the popup will display thumbnails for image attachments.

layerlist-chart

Coordinate formatter

The new coordinateFormatter module allows users to convert between Points and formatted coordinates notation strings such as:

  • decimal degrees
  • degrees, minutes, and seconds
  • U.S. National Grid (USNG)
  • Military Grid Reference System (MGRS).

API updates and enhancements

Breaking changes

Bug fixes and enhancements

  • BUG-000107476: Graphic.visible now works as expected.
  • BUG-000107690: Fixed an issue where the Print widget would still render sublayers in the map, even if these layers are not visible.
  • BUG-000108537: Fixed an issue where panning within the MapView caused inconsistent behavior.
  • BUG-000108807: Fixed an issue where finger touch clicks on an Android's Google Chrome were not working as expected.
  • BUG-000108919: The Popup widget now displays HTML properly within featureMenu titles.
  • BUG-000109057: Panning in a SceneView with too many layers will jump to unexpected locations
  • BUG-000109095: The Esri Icon Font now reflects the full image while using TextSymbol in legends.
  • BUG-000109632: MapView is now updating the interacting property on mouse scroll.
  • BUG-000109985: Printing a FeatureLayer derived from a collection now displays as expected.
  • BUG-000110304: Rotating the map on a mobile device now refreshes the tiles as expected.
  • BUG-000110452: Fixed an issue where printing secure services didn't work as expected.
  • BUG-000110617: Fixed an issue where FeatureLayer popups would not display if added with a VectorTileLayer marked with false visibility.
  • BUG-000110730: Removed opacity as a layer property for IntegratedMeshLayer.
  • BUG-000110867: Fixed an issue where adding a copyright into the Print widget now works as expected.
  • BUG-000111134: Fixed an issue with inconsistent popup docking on mobile devices.
  • BUG-000111218: Fixed an issue where calling Popup.open and passing in a location object would throw errors.
  • BUG-000111290: Fixed an issue where point features in secure VectorTileLayer would not display if credentials were passed through a proxy file.
  • BUG-000112017: Fixed an issue where the Attribute widget would expand/close infinitely if it contained a dependency on dojox/mobile/Button.
  • BUG-000112066: Fixed an issue where VectorTileLayers would sometimes fail to draw during reload.
  • BUG-000112343: Fixed displaying false warnings when setting minScale on a LabelClass in 3D.
  • BUG-000110974: StreamLayerView class now emits the data-received event as expected.
  • BUG-000111020: Fixed an issue with how the PopupTemplate handled content while panning the map.
  • ENH-000103392: Updated the documentation for locally installing the API.
  • ENH-000108856: Legend is now supported in the LayerList widget.
  • ENH-000109037: It is now possible to set an initial rotation property of the MapView while disabling rotation at the same time.
  • ENH-000109075: Fixed documentation specific to the Track widget's track event.
  • ENH-000109136: Updated the documentation to help clarify the system requirements when working with 3D data.
  • ENH-000111260: Added property dpi to esri/widgets/Print/TemplateOptions.
  • ENH-000110966: Updated PrintTemplate.layout descriptions.
  • GEONET-209499/GEONET-207422: Adding points to end of ring with Polyline.insertPoint() and Polygon.insertPoint() failed in 4.6.
  • Fixed an issue with the PrintTask to make the URL parser more robust.
  • Fixed an issue with FeatureLayer WebGL printing.
  • Search widget will display console errors if a field referenced in searchFields, displayField, or outFields doesn't exist in the service.

Website enhancements

  • Improved search.

Additional packages

Version 4.7 of the ArcGIS API for JavaScript uses ArcGIS Arcade 1.3 (since 4.6), Dojo 1.13.0 (since 4.6), dgrid version 1.2.1 (since 4.5), and dstore version 1.1.2 (since 4.5). From Dojo 2 release candidate 2 we use @dojo/core version 0.5, @dojo/has version 0.1.2, @dojo/i18n version 0.6.0, and @dojo/shim version 0.2.7 (all since 4.7).

Previous releases