Release notes for 4.26
February 2023
Features can be highlighted with different symbols per layer
At this release, features can be highlighted with different symbols per layer in a 2D MapView. This can be done by setting the highlightOptions on the corresponding layerView. In a future release, we will add support for this in a 3D SceneView and explore additional highlight options to make the highlighted features stand out from the rest of the map.
Apply a background and border to your FeatureLayer labels
We enhanced the TextSymbol class to allow backgroundColor, borderLineColor, and borderLineSize properties to now work with FeatureLayer instead of just MapImageLayer. This can be very useful for labeling, as shown in the updated sample below.
Clustering and binning maximum scale
You can now disable clustering and binning visualizations when the user zooms beyond a given max
. This is useful for apps where the user is required to zoom to a large scale where the clustering or binning configuration is no longer needed and individual point locations should display.
The Point clustering - generate suggested configuration sample demonstrates this behavior.
Sort features drawn in view based on unique values
UniqueValueRenderer added the orderByClassesEnabled property. When enabled, this sorts the order of features in the view so they match the order defined for the unique values in the legend.
This is useful for cases where you want to display higher priority features on top of features with a lower priority. The Sort features by legend order sample demonstrates this by rendering car crash locations in three categories, crashes that resulted in:
- fatalities
- injuries
- no injuries or fatalities
Without controlling how these features are drawn in the view, the more important features (fatalities) would be mostly hidden by features with a lesser priority. By setting unique
, the view more appropriately renders the higher priority features on top of lesser priority features.
Default order | Order by classes enabled |
---|---|
![]() |
![]() |
3D updates
Snapping in 3D measurement tools
Accurately measure lengths and areas of, for example, building roofs and facades. Direct line and area measurements now snap to features and 3D objects in your scene. Snapping is enabled by default and can be toggled by holding the Control key.
All tools that rely on snapping in 3D scenes benefit from improved hints, making it easier to snap to draped features or complex BIM data.
Explore the buildings of San Francisco using the updated Measurement in 3D sample.
Voxel layer popups and interactive slice
Explore the properties of individual voxels by enabling popups on your voxel layer. The popup shows attributes value, variable and voxel position, and if available also depth and time. Added support for the Slice widget allows you to interactively look inside your dataset and select any voxel.
Try out the new web-based VoxelLayer capabilities with a range of new samples.
Improved terrain
Experience improved terrain with enhanced shading and increased resolution for all quality modes. Besides additional contrast, the shading added in 4.25 has been intensified by visualizing the terrain with more detailed geometry. This additional information on the client comes without performance impact thanks to various optimizations in the terrain rendering.
Layer updates
MediaLayer authoring experience
We added support for an authoring experience for MediaLayer in the Map Viewer, allowing you to add media to your map, adjust the control points, resize your image, and save it to a WebMap.
Process pixels with client-side raster functions
ImageryTileLayer now supports client-side raster functions (released in beta). The client-side raster functions are operations that apply processing directly to the source image pixels. The calculations are only applied to the source pixels that are visible in the map as you pan and zoom within the map. In upcoming releases, we will continue to add more functions and make the public API easier to work with.
The following sample demonstrates how you can use a client-side NDVI
raster function to quantify vegetation greenness and use the Colormap raster function to display the result.
ImageryLayer mensuration
ImageryLayer now supports various mensuration operations. You can call measureAreaAndPerimeter(), measureDistanceAndAngle(), measureHeight(), and measurePointOrCentroid() methods to take various measurements on an image service.
StreamLayer updates
We added many new properties and methods this release that should improve your experience working with StreamLayers:
- The sendMessageToSocket() method can be used to send a message over the websocket to the server.
- The StreamLayerView.message-received event fires when the layer view receives a new message sent to the websocket connection.
- The pause() and resume() methods on StreamLayerView can be used to pause and resume the connection.
Users now can create a client-side StreamLayer by taking advantage of the sendMessageToClient() method. To create a client-side layer, one must provide all properties required to create the StreamLayer schema. Then, call send
to add, remove, or update features.
Check out this sample for an example.
KnowledgeGraphLayer
KnowledgeGraphLayer (released in beta) is a new layer type for visualizing data from a knowledgeGraphService on a map. A KnowledgeGraphLayer is a composite layer with sublayers for spatial and non-spatial entity and relationship types. Spatial sublayers can be used with renderers, have configured popups and used in other spatial analysis. A KnowledgeGraphLayer can only be added to an instance of a map. Currently, it cannot be saved as an ArcGIS Enterprise Portal item, used in an web map or added as a layer in Map Viewer.
SubtypeGroupLayer rotation visual variables
SubtypeGroupLayer added support for the RotationVariable visual variable. Support for ColorVariable, OpacityVariable, and SizeVariable will be coming at a future release.
Widget updates
Popup
Select feature in related records popup
The new Select feature
action button within RelationshipContent provides a way to highlight and zoom to the selected related feature while also opening the related feature's popup.
Popup chart colors reflect renderer colors
Popup chart colors now automatically respect feature reduction renderer colors when visualizing data with specific renderers. This is supported for binning with the predominance, dot density, and the pie chart renderers, along with clustering with the pie chart renderer.
Sketch
The Sketch widget added a duplicate() method that duplicates graphic(s) in an update workflow and adds the new graphic copies to the widget's GraphicsLayer. The widget displays a duplicate (or copy) button when a single or multiple graphics are selected and in an update workflow. The Graphic attributes, geometry, and symbol properties are copied over to the new graphics.
Editor
The Editor was updated to support selecting features that do not have update
capabilities, e.g. allowed
. Prior to this release, the UI's select
tool would not become enabled to support feature selection, even if the underlying data supported these operations. This recent update was necessary to be able to select and delete a feature. In addition, this update was needed for workflows where editing or creating attachments was a requirement.
FeatureForm
The FeatureForm widget was updated to make use of Calcite's Date Picker and Time Picker components.
Legend
The field alias is no longer displayed in the Legend widget by default for UniqueValueRenderer.
Set the legendOptions title
to the field alias if needed.
Utility network
The UtilityNetwork added the ability to validate a network's topology with the synchronous validateTopology() and asynchronous submitTopologyValidationJob() methods.
UtilityNetworkAssociations widget
The new UtilityNetworkAssociations widget allows users to query and visualize the associations of a utility network within the current extent of the view. The widget supports viewing connectivity and structural attachment associations.
By default, a user can manually refresh the associations after an extent change, but they can also be refreshed automatically when a user pans or zooms the map by setting the autoRefreshAssociations property to true
.
To allow users to adjust the number of maxAllowableAssociations, you can display the max allowable associations slider within the widget.
If the number of associations queries exceeds the value set for maxAllowableAssociations, then the server will not return any associations.
CIMSymbol updates
At this release, we made the following enhancements to CIMSymbol:
- Introduced support for CIMGeometricEffectDonut, which creates a dynamic polygon ring of a specified width in relation to the outline of polygon features. The example below uses a CIMPolygonSymbol with the donut effect to visualize the boundary of Grand Canyon National Park.
- Added support for animated picture markers placed within a polygon
- Added support for primitive overrides on marker placement properties
- Fixed bugs and improved performance of other geometric effects
Print non-spatial tables
We added a new property to the PrintTemplate to allow users to print tables using the print
and PrintViewModel.print() methods. When
PrintTemplate.includeTables is true
, tables will be
included in the printout request. A table is a non-spatial dataset in a feature service or map service. This is only applicable
to print templates that are configured to support tables.
Downloadable samples using ES modules
ES module (ESM) samples are being added to the SDK that provide the same functionality as the existing AMD samples. However, the ESM samples use @arcgis/core and are available as a downloadable Vite.js project that can be installed and built locally using NPM. ESM works with most modern JavaScript frameworks and module bundlers without the need for additional loaders or specialized configurations. Visit the Sample page for the latest list.
Added classes, properties, methods, events
Deprecated classes, properties, methods, events
View Popup autocasting deprecation
In a continuous effort to optimize the performance of the API, more specifically the load time, the decision was made to stop bundling the Popup with the MapView and SceneView. The Popup widget receives new features regularly, such as when browsing related records. Each new feature added to the popup widget increases the amount of built code and size of the widget that is being sent to the web browser. For example, the Popup module, which is bundled with the MapView, represents around 50% of the size of the bundle.
In a future release, the Popup widget loading will be deferred until the view is ready and will only be loaded if there are layers with a popup configured since it is only useful once content is displayed on the view. This will not disturb the user experience and the popup will still show up when the end user clicks on popup enabled content.
If you are interested in testing this optimization, make sure to check out the early access release description in the CHANGELOG, where we will provide more details and strategies to upgrade your code as we get closer to the next release.
Breaking changes
- ImageryTileLayer's default title is now created from its URL like other layers instead of the name property from the service's root resource.
- Setting Editor.layerInfos
update
toEnabled false
will not disable the ability todelete
features. Prior to this release, settingupdate
toEnabled false
would prevent both updates and deletes on a feature. Now if deletes are needed, it is necessary to also setdelete
toEnabled true
. - The default value of VoxelIsosurface.colorLocked changed from
true
tofalse
. - The Editor widget's UI has been slightly updated to show snapping settings using an accordion component rather than a popover.
- The
global
property of GraphSearchStreaming was replaced withI d s Filter ids
.Filter - The networkService.fetchServiceDescription() method now returns an object with a
default
property of type TravelMode instead of type string.Travel Mode - Retired WebGL1: Loading a SceneView now requires a device which supports WebGL2.
The following classes, methods, properties and events have been deprecated for at least 2 releases and have now been removed from the API:
Class/Property/Method/Event | Alternate option | Version deprecated |
---|---|---|
esri/widgets/Slice/Slice | esri/analysis/SlicePlane | 4.23 |
Knowledge Graph beta changes
The knowledgeGraphService remains in beta. Capabilities in version 4.26 are only supported against ArcGIS Enterprise 11.1 and later. To access a knowledgeGraphService on ArcGIS Enterprise 11.0 and earlier, use version 4.25.
In 4.26/Enterprise 11.1, the data model and service definition of knowledge graph services were updated.
With the exception of Graph
, this change will not break client-side code written using the methods for knowledgeGraphService.
The table below lists the knowledge graph properties that have been removed at this release:
Property | Alternate Option |
---|---|
Knowledge | fetchKnowledgeGraph() returns the data model |
Graph | idsFilter |
Graph | SearchIndex |
Relationship and Relationship | RelationshipType.endpoints |
Relationship and Relationship | none |
Please refer to the Breaking changes guide topic for a complete list of breaking changes across all releases of the 4.x API.
Bug fixes and enhancements
- BUG-000135050: Fixed an issue where Popups would not display attachments when sublayers on a MapImageLayers had AttachmentsContent configured. This only applies to map services on ArcGIS Enterprise version 10.8.1 and above.
- BUG-000146636: Fixed an issue where using the Zoom To action in popups would zoom passed the selected geometry's extent.
- BUG-000153564: Fixed an issue where VectorTileLayer intermittently stopped drawing some tiles at certain zoom levels.
- BUG-000153928: Fixed an issue where Area Measurement failed if the second point was added via a double-click instead of single click.
- BUG-000154063: Fixed an issue in the FeatureTable widget where edits would periodically not save correctly after quickly scrolling through table records.
- BUG-000154321: Fixed an issue where LineOfSightViewModel
observer
andtargets
returned z-values in varying elevation modes. Now all z-positions are returned as absolute values. - BUG-000154335: Fixed an issue in the FeatureTable widget where only the default fields were displayed for SceneLayer with associated FeatureLayer.
- BUG-000154436: Fixed an issue in the FeatureTable widget where hiding a child column contained within a grouped column would not work correctly. This has been fixed and these contained columns can be hidden when programmatically setting their visibility to
false
. - BUG-000154467: Fixed an issue where null or invalid values were returned in form expressions when the calculation was dependent on the field currently being calculated.
- BUG-000154629: Fixed an issue where DynamicLayer was not honoring transparency.
- BUG-000154645: Fixed an issue where calling FeatureLayer.save() resulted in bad JSON if the layer had a renderer with UniqueValueGroups containing values with the less-than sign (<) or the greater-than sign (>).
- BUG-000151127: Fixed an issue where a WebScene with 3D symbols does not display if the portal URL is set to a different portal.
- Esri Community - 1231460: Fixed an issue where users aren't able to set a container coming from another context (iframe, window).
- Esri Community - 1240962: Fixed a regression in WebTileLayer where
fetch
could not be overridden when creating a custom subclass.Tile() - Esri Community - 1241411: Fixed an issue where an AbortError thrown when deleting a layer after changing its definitionExpression.
- Esri Community - 1242600: Fixed an issue where the MapView.takeScreenshot() was not taking high resolution screenshots.
- Esri Community - 1248727: Fixed a Dutch translation issue with the Search widget results popup title.
- Esri Community - 1250753: Fixed an issue where StreamLayer custom parameters were not updated at runtime.
- Fixed an issue where an ImageryLayer was displaying a white background around the exported image causing layers underneath to not be visible.
- Fixed an issue where MediaContent charts in a popup displaying information from a relationship were only showing one related feature.
- Fixed an issue where MediaContent charts in a popup were not drawing when displaying information from a related table.
- Fixed an issue where two
query
requests were sent to the service when selecting a feature that had AttachmentsContent in its Popup.Attachments - ENH-000121116: Enhanced the TextSymbol class to allow backgroundColor, borderLineColor, and borderLineSize properties to now work with FeatureLayer.
- ENH-000152699: Added support for ImageryTileLayer referencing a tiled image services with LODs that are not power of two.
- ENH-000155208: Enhanced TileLayer to highlight the selected feature when displaying its Popup.
- Enhanced the Directions widget with improved summary and per-turn distances.
- MediaLayer.source can now be an individual ImageElement or VideoElement. The source can still be a collection of image and video elements.
- Enhanced the SpatialReference by adding unit to return the unit of measure for the spatial reference and metersPerUnit to easily convert from one spatial reference unit to another.
Additional packages
Version 4.26 of the ArcGIS Maps SDK for JavaScript uses ArcGIS Arcade 1.21 (since 4.26).
Version 4.26 of the ArcGIS Maps SDK for JavaScript uses Calcite Design System, version 1.0.7.
Previous releases
- Version 4.25 - November 2022
- Version 4.24 - June 2022
- Version 4.23 - March 2022
- Version 4.22 - December 2021
- Version 4.21 - September 2021
- Version 4.20 - June 2021
- Version 4.19 - April 2021
- Version 4.18 - December 2020
- Version 4.17 - October 2020
- Version 4.16 - July 2020
- Version 4.15 - April 2020
- Version 4.14 - December 2019
- Version 4.13 - October 2019
- Version 4.12 - June 2019
- Version 4.11 - March 2019
- Version 4.10 - December 2018
- Version 4.9 - September 2018
- Version 4.8 - July 2018
- Version 4.7 - April 2018
- Version 4.6 - December 2017
- Version 4.5 - September 2017
- Version 4.4 - July 2017
- Version 4.3 - March 2017
- Version 4.2 - December 2016
- Version 4.1 - September 2016
- Version 4.0 - May 2016