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:
FeatureLayers are now rendered with WebGL by default as of version 4.9.
Sketching
We added several new classes that enable drawing temporary geometries in a 2D MapView:
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.
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.
We added the following renderer creator methods to generate specific point cloud visualizations:
- colorRendererCreator.createPCContinuousRenderer() - For visualizing each point along a continuous color ramp (e.g.
intensity
orelevation
) - colorRendererCreator.createPCTrueColorRenderer() - For displaying the true color of each point.
- typeRendererCreator.createPCClassRenderer() - For visualizing each point based on its classification code (e.g.
high vegetation
,water
, etc.).
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.
Popup widget improvements and updates
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 totrue
, the popup closes when the View camera or Viewpoint changes. - Popup menu can be opened programmatically by setting
featureMenuOpen
totrue
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
- Legend supports MapNotesLayer and PointCloudLayer.
- Added legendEnabled on PointCloudLayer.
- Added HeightModelInfo.
- Added heightModelInfo as a property on the WebScene.
- Renderers and symbols inside renderers can now be autocast by specifying their type.
- OAuthInfo's popupWindowFeatures property no longer contains a default
location
. - Ground follows the loadable pattern. Read more about loadable classes in the Loadable guide topic.
- toJSON() and fromJSON() methods are now available on the Ground class.
- Added elevationInfo on the IntegratedMeshLayer.
- Added offset for 3D Object Scene Layers.
- Added a
featureMenuOpen
property to the Popup's open method. This enables the user to specify a list of selected features if multiple features are selected. - Documented legendURL on WMSLayer.
- Added highlightOptions on MapView.
- Added layerOptions property to the PopupTemplate.
- Added an
autoCloseEnabled
property to both Popup and PopupViewModel. - Added a
collapsed
property to Popup. - Added an asynchronous filter() method to promiseUtils.
- Added an Error class that enhances the debugging and error handling process.
- Added an EsriErrorDetails type definition to esri/Request.
- Added a
useIdentity
property to theesri/config
request method. - Added an
authMode
property to the esriRequest method options. - Added emit methods to emit an event on the instance.
- Added a
parent
property to the ListItem class. - Added an
updateThumbnail
method to the PortalItem class. - Added a
symbol
property to the SizeSlider widget. - Added a
refreshInterval
property to the PopupTemplate's mediaInfos object. - Added a statusIndicatorsVisible property to LayerList.
- Added a
focus
method to the View class. - Added a
layout
property to the Zoom widget. - Add a query property to the PortalBasemapsSource class.
- Added an
expression
option to the labelExpressionInfo property in the LabelClass class. - Deprecated
value
option of the labelExpressionInfo property in the LabelClass class.
Breaking changes
- The
type
property in all renderer, symbol, and symbol layer classes is no longer read-only. - Changed
type
value for many renderers for consistent kebab-casing:- UniqueValueRenderer.type was changed from
uniqueValue
tounique-value
. - ClassBreaksRenderer.type was changed from
classBreaks
toclass-breaks
. - PointCloudClassBreaksRenderer.type was changed from
pointCloudClassBreaksRenderer
topoint-cloud-class-breaks
. - PointCloudRGBRenderer.type was changed from
pointCloudRGBRenderer
topoint-cloud-rgb
. - PointCloudStretchRenderer.type was changed from
pointCloudStretchRenderer
topoint-cloud-stretch
. - PointCloudUniqueValueRenderer.type was changed from
pointCloudUniqueValueRenderer
topoint-cloud-unique-value
. - SimpleMarkerSymbol.type was changed from
simple-marker-symbol
tosimple-marker
. - SimpleLineSymbol.type was changed from
simple-line-symbol
tosimple-line
. - SimpleFillSymbol.type was changed from
simple-fill-symbol
tosimple-fill
. - PictureMarkerSymbol.type was changed from
picture-marker-symbol
topicture-marker
. - PictureFillSymbol.type was changed from
picture-fill-symbol
topicture-fill
. - TextSymbol.type was changed from
text-symbol
totext
. - PointSymbol3D.type was changed from
point-symbol-3d
topoint-3d
. - LineSymbol3D.type was changed from
line-symbol-3d
toline-3d
. - PolygonSymbol3D.type was changed from
polygon-symbol-3d
topolygon-3d
. - MeshSymbol3D.type was changed from
mesh-symbol-3d
tomesh-3d
. - LabelSymbol3D.type was changed from
label-symbol-3d
tolabel-3d
. - WebStyleSymbol.type was changed from
web-style-symbol
toweb-style
.
- UniqueValueRenderer.type was changed from
- ElevationLayers are always visible at the slide level when saving a scene with API 4.5 to Portal 10.5.1 (or earlier).
- The
zoomScale
property in Search sources now automatically uses the set scale. Prior to this version, it would only zoom to the scale if the search result did not have an associated extent. - The Search widget's search() method returns a Promise which, when resolved, returns a SearchResponse similar to the search-complete event.
- Both the Search widget and its corresponding viewmodel's suggest() method returns a Promise which, when resolved, returns a SuggestResponse similar to the suggest-complete event.
- Removed the
cancelSuggest
from SearchViewModel. - Removed the Graphic
getEffectivePopupTemplate
method. Instead, if the graphic's popupTemplate is not defined, it will use the graphic's layerpopupTemplate
. - Removed
minScale
andmaxScale
properties from ElevationLayer.
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 tofalse
, 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
- API Reference - when a property is a Collection, such as GraphicsLayer.graphics or Map.layers; the data type is now explicitly stated.
- API Reference - when a method returns a Promise such as MapView.hitTest or CSVLayerView.queryFeatures; the data type is now explicitly stated.
- API Reference - now supports the ability to show/hide inherited properties, methods, and events.
- API Reference, Sample Code - when the page has focus, active the search using the
/
keyboard shortcut.
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
- 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