Release notes for 4.11

March 2019

Editor widget

Editing in the MapView is now supported using the Editor widget. This widget provides an out-of-the-box experience to help streamline the editing experience within a web application. Prior to this release, while editing was possible it required a bit more work. For example, attribute editing could be handled via the FeatureForm widget. You could also use the FeatureTemplates widget to display templates from one or more feature layers. Prior to this version, they had to be used in conjunction with FeatureLayer.applyEdits as it enables an end user the ability to update a feature.

At 4.11, we combined all this editing functionality into one Editor widget. This does not mean that these other widgets are going away. Rather, it gives more flexibility to the developer in regards to web application editing.

The Editor widget has two Workflows, i.e. create and update. These allow you to either add features or edit and/or delete existing features within an editable feature layer. The widget automatically recognizes which feature layers within the map that are editable.

editor

See the Edit features with the Editor widget and Editor widget with configurations samples for examples.

GeoJSONLayer

The API now supports GeoJSONLayer in both 2D MapViews and 3D SceneViews. GeoJSON is a format for encoding a variety of geographic data structures. See the Add a GeoJSONLayer to your map sample to learn more about how this layer works.

Drawing in 3D

You can now draw graphics with point, line and polygon geometries in a SceneView. The Sketch widget provides out-of-the-box functionality for creating and updating graphics in a SceneView. Change the MapView class with SceneView in the Sketch widget sample to draw graphics on a globe.

A more customized 3D drawing experience is possible by setting 3D symbols on the SketchViewModel. This can be useful for example to draw extruded building footprints or to draw points with volumetric point symbols. The Sketch in 3D sample explains how to draw with custom symbols in a SceneView.

sketch-widget

3D point transform tool

As part of the update operation in the SketchViewModel, a point with ObjectSymbol3DLayer can be moved, rotated and scaled using the 3D point transform tool. The tool is activated when the point graphic is being updated and it adds intuitive handles to manipulate the graphic. Import glTF 3D Models sample shows how to use this tool.

point-transform-tool

GLTF support

3D models in glTF format can now be visualized in a SceneView. If the model is a symbol for a point (like a tree or a bus stop) then you can set it as a resource for ObjectSymbol3DLayer. Models that represent 3D geometry (like a geological model or a building) can be converted to a Mesh geometry using the Mesh.createFromGLTF() method. Read how to add your own 3D models in the Visualizing points with 3D symbols guide topic and see how to import glTF 3D models in this sample.

Dot density support

You can use the DotDensityRenderer to create dot density visualizations for polygon layers. DotDensityRenderer randomly draws dots that represent a fixed value of an attribute or a subset of attributes within each polygon to visualize the relative density of the attribute. Check out the Dot density sample to learn more.

DotDensityRenderer

Smart Mapping updates

You can now generate a HeatmapRenderer using the Heatmap renderer creator module. This allows you to create a nice heatmap without manually setting your own color scheme or configuring how those colors correspond to pixel intensity values.

FeatureLayer updates

Time support

At this release, we added the initial support for time-enabled FeatureLayers. You can get time information associated with a layer by checking its timeInfo property. Both server and client-side queries now return results for a given time extent. Time also can be applied to client side filters and effects.

Table support

Tables can be loaded into an application using FeatureLayer instance and setting the url property to the REST endpoint of a non-spatial table. See the FeatureLayer overview for more information.

Client-side filtering and effects

FeatureFilter

At this release, we added support for client-side filtering in both 2D and 3D. This is made possible through setting FeatureLayerView.filter. Only the features that satisfy the filter conditions will be displayed on the view. Features can be filtered on the client side based on attributes, time, geometry and distance. See Filter features by attributes.

Additionally in 3D you can use client-side spatial filters on SceneLayers. See the Filter features by geometry with SceneLayer sample to find out how to set a filter on a SceneLayerView.

MaskFeatures

FeatureEffect

We also added support for client-side feature effects in 2D. FeatureEffect allows for the selection of features via a filter, and an insideEffect and outsideEffect can be applied those features that respectively pass or fail the filter requirements. An effect can be specified on a FeatureLayerView through its effect property. See Apply effects to features sample.

Expression-based visibility for FeatureForm

The FeatureForm widget supports setting visibility on specific fields and grouped fields. The visibility is controlled by an Arcade expression set using either the FieldConfig's or FieldGroupConfig's visibilityExpression property. The expression evaluates to either true | false and if true, will display the configured field or grouped fields.

See the Advanced Attribute Editing sample for a working example.

3D rendering in high resolution

SceneView now takes advantage of the HiDPI displays to render graphics at a higher resolution, based on the devicePixelRatio browser property. In the screenshot below you can see a 3D population map rendered on a Retina display using the current version of the ArcGIS API for JavaScript and the previous one.

hidpi

This feature is enabled on desktop devices for scenes with the qualityProfile set to high.

Hit test improvements

SceneView.hitTest now returns all graphics (including graphics draped on the terrain) that intersect the specified screen coordinate. Setting parameters like include or exclude allows you to define the layers that will be used for the hitTest. The result of a hitTest returns additional information like distance to the hit point on the graphic or distance to the ground hit. The SceneView - hitTest sample shows which graphics are hit and how you can use the distance to mark the point where the graphic was hit.

SceneView - HitTest

Disable shadows for a symbol

Using the castShadows property you can now specify which symbols should cast shadows. See the SceneView - shadow and lighting settings sample to learn how to disable shadows on individual symbol layers and how to set lighting options in a SceneView.

Access data in popups with Arcade expressions

You can author Arcade expressions for popups that access features from any layer in the map. This is made possible through the FeatureSet capabilities introduced at Arcade version 1.5. This means you can display information about the selected feature and its relationship to other features in the same layer or other layers. This includes the ability to check spatial relationships using geometry functions.

UI update to OAuth sign-in dialog

The UI of the OAuth popup confirmation dialog has been slightly updated to reflect where the user is signing into.

oAuthPopupConfirmation UI - pre 4.11oAuthPopupConfirmation UI - 4.11
oAuthPopupConfirmationold oAuthPopupConfirmationnew

Better WebMap support

In this release, we added support for time. This means most web maps can now be read using the 4.x API. Not yet supported web map features include WFS, clustering, and temporal renderers for StreamLayer.

Support for Ukrainian locale

Version 4.11 adds support for the Ukrainian (uk) locale. See Localization topic for more information about using different locales.

API updates and enhancements

Breaking changes

  • The behavior of FeatureLayer.outFields has changed. It is no longer computed to include fields required for layer labeling, rendering, editing and elevation info. It now returns null unless it is explicitly set.
    • In general, you no longer need to specify the outFields. The API automatically determines which fields to fetch. However, if you are using the fields in custom functionality, you might still need to explicitly add those using the outFields property.
    • To find out which fields are available client-side, use the new availableFields property. It contains a list of attribute fields fetched for each feature including fields required for layer labeling, rendering, elevation info, and any additional fields defined with the FeatureLayer.outFields property. The availableFields is populated when the layer view is finished updating.
  • Query.units property's default value is now null instead of meters.
  • Sublayer.createFeatureLayer() now returns a promise resolving to a FeatureLayer, as opposed to a FeatureLayer.
  • Autocasting is no longer supported for Mesh geometry.
  • Change to how texture transparency is interpreted in esri/geometry/support/MeshMaterial. Before, values below 0.1 would be interpreted as fully transparent (i.e. masking), now this threshold was moved to 0.5. If the old behavior is desired, the threshold can now be explicitly changed using the alphaCutoff property.
  • Moved the select method out of FeatureTemplates and into the FeatureTemplatesViewModel.
  • Removed contentEnabled property on both the Feature widget and the FeatureViewModel.
  • Removed esri/geometry/ScreenPoint class.
  • Removed Legend support from MapNotesLayer.
  • Removed token property from all layer classes. The recommended approach to pass a token on a layer is to use IdentityManager.registerToken() or to use esriConfig.request.interceptors.
  • Removed the view property from Feature widget and FeatureViewModel.
  • The MapImageLayer.getImageUrl() method now returns null.
  • Renamed definitionExpression property of AttachmentQuery class to where.
  • Renamed definitionExpression property of RelationshipQuery class to where.
  • Renamed TemplateItemGroup.name to TemplateItemGroup.label.
  • Renamed FeatureLayerSearchSource class to LayerSearchSource.
  • As part of adding 3D drawing support, the 2D draw classes have moved:
  • Several popup related classes have been moved, renamed or removed:
    • Removed Chart class from esri/support/ContentElement/Media/Chart.
    • Removed Media class from esri/support/ContentElement/Media/Media.
    • ExpressionInfo class moved from esri/support/ExpressionInfo to esri/popup/ExpressionInfo.
    • FieldInfo class moved from esri/support/FieldInfo to esri/popup/FieldInfo.
    • LayerOptions class moved from esri/support/LayerOptions to esri/popup/LayerOptions.
    • RelatedRecordsInfo class moved from esri/support/RelatedRecordsInfo to esri/popup/RelatedRecordsInfo.
    • Renamed ContentElement class from esri/support/ContentElement to content and moved to esri/popup/content.
    • Renamed ContentElement class from esri/support/ContentElement/ContentElement to Content and moved to esri/popup/content/Content.
    • Renamed Attachments class from esri/support/ContentElement/Attachments to AttachmentsContent and moved to esri/popup/content/AttachmentsContent.
    • Renamed Fields class from esri/support/ContentElement/FieldsContent to FieldsContent and moved to esri/popup/content/FieldsContent.
    • Renamed Text class from esri/support/ContentElement/Text to TextContent and moved to esri/popup/content/TextContent.
    • Renamed Media class from esri/support/ContentElement/Media to MediaContent and moved to esri/popup/content/MediaContent.
    • Renamed BarChart class from esri/support/ContentElement/Media/BarChart to BarChartMediaInfo and moved to esri/popup/content/BarChartMediaInfo.
    • Renamed FieldsOrder class from esri/support/RelatedRecordsInfo/FieldOrder to RelatedRecordsInfoFieldOrder and moved to esri/popup/support/RelatedRecordsInfoFieldOrder.
    • Renamed Format class from esri/support/FieldInfo/Format to FieldInfoFormat and moved to esri/popup/support/FieldInfoFormat.
    • Renamed Series class from esri/support/ContentElement/Media/Chart/Series to ChartMediaInfoValueSeries and moved to esri/popup/content/support/ChartMediaInfoValueSeries.
    • Renamed Value class from esri/support/ContentElement/Media/Chart/Value to ChartMediaInfoValue and moved to esri/popup/content/support/ChartMediaInfoValue.
    • Renamed ColumnChart class from esri/support/ContentElement/Media/ColumnChart to ColumnChartMediaInfo and moved to esri/popup/content/ColumnChartMediaInfo.
    • Renamed LineChart class from esri/support/ContentElement/Media/LineChart to LineChartMediaInfo and moved to esri/popup/content/LineChartMediaInfo.
    • Renamed PieChart class from esri/support/ContentElement/Media/PieChart to PieChartMediaInfo and moved to esri/popup/content/PieChartMediaInfo.
    • Renamed Image class from esri/support/ContentElement/Media/Image to ImageMediaInfo and moved to esri/popup/content/ImageMediaInfo.
    • Renamed Value class from esri/support/ContentElement/Media/Image/Value to ImageMediaInfoValue and moved to esri/popup/content/support/ImageMediaInfoValue.
  • A graphic can only be in one GraphicsLayer at a time. When adding a graphic to a graphics layer, and if it is already in another graphics layer, the graphic is moved to the destination graphics layer.
  • The developer and user experiences for 2D highlights have been improved in three ways:
    • soft, anti-aliased edges
    • decreased default opacity that is now consistent with the default settings used in 3D
    • modified coverage algorithm that now highlights the transparent portions of lines and polygons

Highlight changes

Please refer to the Breaking Changes guide topic for a complete list of breaking changes across all releases of the 4x API.

Bug fixes and enhancements

  • triangle style in SimpleMarkerSymbol and IconSymbol3DLayer is now supported in SceneView.
  • Fixed an issue where active AreaMeasurement and DistanceMeasurement widgets were displaying as Untitled layer in the LegendList widget.
  • Fixed an issue with the clearMeasurement() method while the measurement is active for both the AreaMeasurement2DViewModel and DistanceMeasurement2DViewModel.
  • BUG-000117292: Fixed an issue where assigning to tileServers property resulted in error messages.
  • BUG-000117868: Fixed an issue when switching between the same renderer type with different valueExpression did not update the renderer correctly.
  • BUG-000118610: Fixed an issue where the Expand widget would not display fully when closed on iOS devices.
  • BUG-000119246: Fixed an issue where the Draw class failed to display a line while dragging after the first click/point.
  • BUG-000119345, BUG-000117357, and BUG-000118286: Fixed issues where certain symbols would display clipped.
  • BUG-000119350: Fixed an issue where Picture marker symbols render clipped when Y offset is defined.
  • BUG-000119383: Fixed an issue when defining templateOptions values in the Layout tab of the Print widget no longer disappear once the Map Only tab is clicked.
  • BUG-000119468: Fixed an issue where sometimes high resolution WMTS layers would not display entirely.
  • BUG-000119655: Fixed an issue where the BasemapGallery widget threw errors when switching between Web Map Tile Service (WMTS) basemaps.
  • BUG-000119660: Fixed an issue when using the Sketch widget when drawing a graphic across the International Date Line.
  • BUG-000118567: Fixed an issue where PictureMarkerSymbols would hide TextSymbols when adding layered graphics.

Website enhancements

We made two significant enhancements to the Sandbox environment of our Sample Code. First, portalItems and Esri modules are clickable, and link to their respective documentation or item page in ArcGIS Online. Second, we have enabled local storage in the browser for changes made to samples in this environment. If a change is made, the sample from local storage will always be loaded until the user deletes the local copy using the Revert link. The Revert link is only displayed when a sample is loaded from the browser's local storage.

Additional packages

Version 4.11 of the ArcGIS API for JavaScript uses ArcGIS Arcade 1.6, Dojo 1.14.2 (since 4.11), dgrid version 1.2.1 (since 4.5), and dstore version 1.1.2 (since 4.5). From Dojo 5 we use @dojo/framework version 5.0.0 (since 4.11).

Previous Releases

Your browser is no longer supported. Please upgrade your browser for the best experience. See our browser deprecation post for more details.