Release notes for 4.5

Topics

FeatureLayer performance updates in 2D (beta)

Starting with this release, you can opt in to render FeatureLayer with WebGL (beta) in a 2D MapView. This allows you to display more data in the view and update the visualization of features more rapidly, such as this layer with more than 1 million building footprints:

featurelayer-webgl-fast-updates

FeatureLayer will be rendered with WebGL by default in a future release. Read more details of the performance updates in the FeatureLayer class description, including how to opt in to these performance updates.

Sketching

We added several new classes that enable drawing temporary geometries in a 2D MapView:

Sketch geometries sample

This is the initial release of drawing support in the API. Full support for drawing and editing will come in future releases, including the following:

  • Editing existing geometries
  • Creating and editing new geometries, including but not limited to, multipoint geometries.
  • A Sketch widget
  • Support for drawing in a 3D SceneView
  • Full editing support. This includes the ability to enable common geometry validation rules such as preventing self intersecting lines.

OGC support

KML

KMLLayer is a new layer type in version 4.5. Currently, it is only supported in 2D MapView.

WMS and WMTS in 3D

Support for WMS and WMTS in 2D MapViews was added in version 4.4. As of version 4.5, WMSLayer and WMTSLayer can also be used in WebScene. Please see the WMSLayer sample for an example of how to use WMS layers in a WebScene.

Arcade support in 3D

Arcade expressions now can be used for labels and elevation offsets. For more information on how to use Arcade in these contexts, read the Arcade guide. The Elevation options sample shows how to use Arcade expressions for setting a custom elevation.

Elevation options

See the Label features using Arcade expressions sample to see how Arcade expressions are used to label features.

Elevation offset support for more layer types

The vertical placement of buildings and other 3D Objects can be adjusted using the new elevationInfo property. This is helpful when the SceneLayer doesn't match the terrain elevation and buildings are either sinking in the ground or flying above the ground. The elevationInfo property was also added to IntegratedMeshLayer and PointCloudLayer. Currently only absolute-height mode works for the three layer types.

Smart Mapping support for point clouds

The Smart Mapping APIs now support PointCloudLayer. As of 4.5, you can generate renderers with good default point sizes with colors based on traditional point cloud rendering standards.

point-cloud-smart-mapping

We added the following renderer creator methods to generate specific point cloud visualizations:

The following existing API statistics methods now support PointCloudLayer inputs:

Expanded Autocasting support

We added autocasting support for all renderers, symbols, symbol layers. You can also autocast geometries added to graphics.

This means that you no longer need to require any renderer, symbol, and symbol layer modules in your module loader. Simply set the desired properties in a simple object and set the type property to specify which symbol or renderer to create.

require([
  "esri/layers/FeatureLayer",
], function ( FeatureLayer ) {

  var diamondSymbol = {
    type: "simple-marker",  // autocasts as new SimpleMarkerSymbol()
    style: "diamond",
    color: [ 255, 128, 45 ],  // autocasts as new Color()
    outline: {    // autocasts as new SimpleLineSymbol()
      style: "dash-dot",
      color: [ 255, 128, 45 ]
    }
  });

  var layer = new FeatureLayer({
    url: "https://services.arcgis.com/V6ZHFr6zdgNZuVG0/arcgis/rest/services/WorldCities/FeatureServer/0",
    renderer: {
      type: "simple",  // autocasts as new SimpleRenderer()
      symbol: diamondSymbol
    }
  });

});

Point, Polygon, and Polyline geometries can also be autocast when added to Graphic. The type property will specify which geometry to create.

var pointGraphic = new Graphic({
  geometry: {
    type: "point", // autocasts as new Point()
    longitude: -71.2643,
    latitude: 42.0909
  },
  symbol: {
    type: "simple-marker", // autocasts as new SimpleMarkerSymbol()
    color: [226, 119, 40]
  }
});

All samples and code snippets in the API reference have been updated to use this pattern. See also the Autocasting guide topic, which has been updated in this release.

Vertical coordinate systems

We now leverage support for vertical coordinate systems (VCS) and vertical units with scene or imagery layers containing precise vertical measurements. The WebScene reads and stores the VCS of a webscene in the heightModelInfo property.

Numerous updates were made to the Popup widget to enhance the overall user experience. In addition to undergoing a minor popup redesign, the Popup has been updated to support the widget framework introduced at version 4.2. Additional updates include:

  • Added an autoCloseEnabled property to both Popup and PopupViewModel. If set to true, the popup closes when the View camera or Viewpoint changes.
  • Popup menu can be opened programmatically by setting featureMenuOpen to true in the open method.
  • Popup is now only visible when it has content or has a feature and isn't waiting for a result. This eliminates the issue of the Popup's open method being called twice in cases where there may be a slow internet connection. This fixed BUG-000106928.
  • Added a promiseCount property to the PopupViewModel.

API updates and enhancements

Breaking changes

Bug fixes and enhancements

  • BUG-000106780: GEONET-198211: can't load more than one WMSLayer in 4.4.
  • BUG-000104472: Setting the rotationEnabled property of the MapView's constraints property to 'false' no longer causes problems using pinch while zooming in/out on mobile devices.
  • BUG-000106239: Honor color for SimpleFillSymbol for hatch style. Note that this is an enhancement from 3.x where non-solid fill patterns are always black.
  • BUG-000106893: Fixed an issue where the goTo method did not work correctly when spatial reference is set using WKT.
  • BUG-000105935: Fixed an issue where certain stream layers would not load properly while using IE 11.
  • BUG-000105956: The BasemapToggle widget now properly displays the title of basemaps when the titleVisible property is true.
  • BUG-000106572: Fixed an issue where the Search widget would not generate an extent from a resulting point location.
  • BUG-000106579: Black square images no longer replace symbols in VectorTileLayers at runtime.
  • Fixed an issue when using esri/request against an admin REST endpoint did not prompt for credentials.
  • BUG-000107381 - Fixed an issue for parsing an array of features returned from ServiceAreaTask.solve().
  • BUG-000106674: MapImageLayer now honors the default visibility for sublayers.
  • BUG-000106928: Pop-up no longer automatically opens after closed in a slow connection.
  • BUG-000105454: The BasemapToggle widget now displays the correct thumbnail image.
  • BUG-000106907: Rotate now rotates properly if padding is set on the MapView.
  • BUG-000106485 and BUG-000105504 - Curvature in lines now display properly in both MapView and SceneView.
  • BUG-000106984 - MapView extent is now correct if it is set before the view is initialized.
  • BUG-000106683 - Fixed the error, "Cannot read property 'position' of undefined" after clicking on a view before a FeatureLayer is fully loaded.
  • ENH-000106283 - Improved documentation for the esri/config request.httpsDomain property.
  • ENH-000105839 - Fixed documentation for MapView navigation table.
  • The Search autoNavigate property now works as expected. Once set to false, the search result will not automatically zoom to its extent. It takes precedence if set on the widget's sources[] property. If it is not defined here, it will take whatever is set directly on the widget itself.
  • Fixed an issue for custom LOD's whose tiling schema origin was incorrect.
  • GEONET-198778 was fixed: labels on draped polygons update position and callouts now work on polylines and polygons.

Website enhancements

Additional packages

Version 4.5 of the ArcGIS API for JavaScript uses Dojo 1.12.2 (since 4.4), dgrid version 1.2.1 (since 4.5), and dstore version 1.1.2 (updated from 1.1.1 in version 4.5).

Previous releases