Release notes for 4.7
- Topics
- WebGL rendering updates
- Client-side projection
- Mobile support in 3D
- Edge rendering for 3D Object SceneLayer
- Widget updates
- Draw updates
- Custom builds with npm and webpacks
- Better support for ES promises
- Smart Mapping updates
- FeatureLayer updates
- CSVLayer updates
- Mesh geometry
- Thumbnails for attachments in popup
- Coordinate formatter
- API updates and enhancements
- Breaking changes
- Bug fixes and enhancements
- Website enhancements
- Additional packages
Topics
WebGL rendering updates
FeatureLayers are now rendered with WebGL by default as of version 4.9.
- 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.
- Queries can now be executed for statistics on the client. See the Query client-side statistics sample.
- Querying the layer view has a number of limitations. See the documentation for details.
- 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.
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.
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.
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.
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.
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.
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.
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:
- Combine LayerList and Legend widgets
- Add charts and text to LayerList panels
- Add multiple content types to a LayerList panel
We removed the createActionsFunction
property from LayerList and LayerListViewModel classes. This is a breaking change. Use listItemCreatedFunction instead.
Draw updates
- SketchViewModel now has support for creating
rectangle
,square
,circle
andellipse
shapes. These shapes are created with the help of SegmentDrawAction under the hood. - SketchViewModel now has support for updating temporary geometries. You can now move the entire geometry or move one or more vertices at a time. See the updated Sketch temporary geometries sample.
- Draw and SketchViewModel now have support for different drawing modes when creating Polygon and Polyline geometries.
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.
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
CSVLayers are now rendered with WebGL by default as of version 4.9.
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.
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.
Thumbnails for attachments in popup
For services that support it, and supported file types, the popup will display thumbnails for image attachments.
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
- Added class esri/core/HandleOwner.
- Added class esri/core/Handles.
- Added class esri/core/scheduling.
- Added class esri/geometry/coordinateFormatter.
- Added class esri/geometry/Mesh.
- Added class esri/geometry/projection.
- Added class esri/geometry/support/GeographicTransformation.
- Added class esri/geometry/support/GeographicTransformationStep.
- Added class esri/geometry/support/ImageMeshColor.
- Added class esri/geometry/support/MeshComponent.
- Added class esri/geometry/support/meshUtils.
- Added class esri/geometry/support/ValueMeshColor.
- Added class esri/layers/support/ElevationSampler.
- Added class esri/layers/support/Relationship.
- Added class esri/symbols/edges/Edges3D.
- Added class esri/symbols/edges/SketchEdges3D.
- Added class esri/symbols/edges/SolidEdges3D.
- Added class esri/views/2d/draw/DrawAction.
- Added class esri/views/2d/draw/SegmentDrawAction.
- Added class esri/views/GroundView.
- Added class esri/webscene/applicationProperties/Search.
- Added class esri/webscene/applicationProperties/SearchLayer.
- Added class esri/webscene/applicationProperties/SearchLayerField.
- Added class esri/webscene/applicationProperties/Viewing.
- Added class esri/webscene/ApplicationProperties.
- Added class esri/widgets/AreaMeasurement3D/AreaMeasurement3DViewModel.
- Added class esri/widgets/AreaMeasurement3D.
- Added class esri/widgets/CoordinateConversion/CoordinateConversionViewModel.
- Added class esri/widgets/CoordinateConversion/support/Conversion.
- Added class esri/widgets/CoordinateConversion/support/Format.
- Added class esri/widgets/CoordinateConversion.
- Added class esri/widgets/DirectLineMeasurement3D/DirectLineMeasurement3DViewModel.
- Added class esri/widgets/Feature/FeatureViewModel.
- Added class esri/widgets/Feature.
- Added class esri/widgets/LayerList/ListItemPanel.
- Added events blur, immediate-click to esri/views/MapView.
- Added events blur, immediate-click to esri/views/SceneView.
- Added events blur, immediate-click to esri/views/View.
- Added events draw-cancel, draw-start, update-cancel, update-complete, update-start to esri/widgets/Sketch/SketchViewModel.
- Added method classes to esri/widgets/Attribution.
- Added method classes to esri/widgets/BasemapGallery.
- Added method classes to esri/widgets/BasemapToggle.
- Added method classes to esri/widgets/Compass.
- Added method classes to esri/widgets/Directions.
- Added method classes to esri/widgets/DirectLineMeasurement3D.
- Added method classes to esri/widgets/Expand.
- Added method classes to esri/widgets/Fullscreen.
- Added method classes to esri/widgets/Home.
- Added method classes to esri/widgets/LayerList.
- Added method classes to esri/widgets/Legend.
- Added method classes to esri/widgets/Locate.
- Added method classes to esri/widgets/NavigationToggle.
- Added method classes to esri/widgets/Print.
- Added method classes to esri/widgets/ScaleBar.
- Added method classes to esri/widgets/Search.
- Added method classes to esri/widgets/Track.
- Added method classes to esri/widgets/Zoom.
- Added method complete to esri/views/2d/draw/Draw.
- Added method createElevationSampler to esri/Ground.
- Added method createElevationSampler to esri/layers/ElevationLayer.
- Added method createFeatureLayer to esri/layers/support/Sublayer.
- Added method cssTransition to esri/widgets/support/widget.
- Added method update to esri/widgets/Sketch/SketchViewModel.
- Added methods classes, set to esri/widgets/Popup.
- Added methods classes, get to esri/widgets/Widget.
- Added methods clone, fromJSON to esri/tasks/support/RelationshipQuery.
- Added methods getFeatureType, queryFeatureAttachments to esri/layers/FeatureLayer.
- Added methods queryExtent, queryFeatureCount, queryFeatures, queryObjectIds to esri/layers/CSVLayer.
- Added parameter drawOptions to Draw.create() method.
- Added parameter drawOptions to SketchViewModel.create() method.
- Added properties datumTransformation, gdbVersion, historicMoment, parameterValues, rangeValues, sqlFormat to esri/tasks/support/Query.
- Added properties dynamicDataSource, historicMoment to esri/layers/FeatureLayer.
- Added properties focused, groundView to esri/views/MapView.
- Added properties focused, groundView to esri/views/SceneView.
- Added properties focused, groundView to esri/views/View.
- Added properties gdbVersion, historicMoment to esri/tasks/support/RelationshipQuery.
- Added properties iconClass, label to esri/widgets/Attribution.
- Added properties iconClass, label to esri/widgets/BasemapGallery.
- Added properties iconClass, label to esri/widgets/Compass.
- Added properties iconClass, label to esri/widgets/Directions.
- Added properties iconClass, label to esri/widgets/Home.
- Added properties iconClass, label to esri/widgets/LayerList.
- Added properties iconClass, label, style to esri/widgets/Legend.
- Added properties iconClass, scale to esri/widgets/Locate.
- Added properties iconClass, label to esri/widgets/NavigationToggle.
- Added properties iconClass, label to esri/widgets/Print.
- Added properties iconClass, label to esri/widgets/Search.
- Added properties iconClass, label, scale to esri/widgets/Track.
- Added properties iconClass, label to esri/widgets/Zoom.
- Added properties returnFieldName, returnM, returnUnformattedValues, returnZ to esri/tasks/support/IdentifyParameters.
- Added properties unitOptions, viewModel to esri/widgets/DirectLineMeasurement3D.
- Added properties
radius
andangle
to the drag event of SceneView. - Added property applicationProperties to WebScene for UI and application properties that need to be persisted by authoring applications.
- Added property applicationProperties to esri/WebScene.
- Added property backgroundFillSymbol to esri/renderers/UniqueValueRenderer.
- Added property declaredClass to esri/widgets/BasemapGallery/support/BasemapGalleryItem.
- Added property dpi to esri/widgets/Print/TemplateOptions.
- Added property dynamicDataSource to esri/layers/StreamLayer.
- Added property edges to esri/symbols/ExtrudeSymbol3DLayer.
- Added property edges to esri/symbols/FillSymbol3DLayer.
- Added property eueiEnabled to esri/portal/Portal.
- Added property mode to esri/views/2d/draw/PolygonDrawAction.
- Added property mode to esri/views/2d/draw/PolylineDrawAction.
- Added property mode to esri/widgets/Expand.
- Added property panel to esri/widgets/LayerList/ListItem.
- Added property popupEnabled to esri/layers/support/Sublayer.
- Added property scale to esri/widgets/Locate/LocateViewModel.
- Added property scale to esri/widgets/Track/TrackViewModel.
- Added property spatialReference to esri/layers/CSVLayer.
- Added specification
supportsResizeAttachments
to FeatureLayer.capabilities property. - Added support for
refreshInterval
for tiled layers in 3D: TileLayer, WebTileLayer, WMTSLayer and BaseTileLayer. - Added UI for property
dpi
of exportOptions to PrintTemplate. - Added value
medium
to the SceneView.qualityProfile settings. - Added values
added
andremoved
to theaction
property of drag event of SceneView. - It is no longer necessary to reference a dijit stylesheet if working with popups that utilize chart mediaInfo.
- In WebGL-rendered layers, the TextSymbol now supports newline characters (
\n
) for multi-line text labels. - WebScenes improve stability by proactively monitoring and controlling memory use across layers, depending on the SceneView.qualityProfile settings. SceneLayers use significantly less memory to help display more data and continue to load while you navigate a scene.
- General improvements were added to make it easier when building accessible web mapping applications.
Breaking changes
- Changed
layers
property tolayer
in AttributionItem. - Removed
classificationMethod
property from ClassBreaksRenderer. - Removed
createActionsFunction
property from LayerList and LayerListViewModel (uselistItemCreatedFunction
instead). - Removed
graphic
property from draw-complete. - Removed
styleOrigin
property from LabelSymbol3D. - Removed
then()
method from all classes (use when() instead when using Promises).
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: StreamLayer 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
- 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