Release notes for 4.10

Topics

Improved drawing performance in 2D

WebGL is now used for drawing all layers in a MapView. This allows us to draw all of the layers in the map using a single WebGL context, which improves drawing performance, especially on mobile devices or when using many FeatureLayers and/or VectorTileLayers. Rendering graphics in WebGL results in far more rapid display of both small and large datasets.

Better Labeling Support

In this release, we added support for labeling lines in 2D MapViews. Currently, the only 2D line labelPlacement supported is center-along. These labels are produced on the fly, based on your data, and dynamically change as the user interacts with the map. We also improved the labeling behavior when working with visual variables, and enhanced the labeling priority in 2D MapViews to better match the layer ordering. Lastly, if the TextSymbol3DLayer.size property is not set, the font.size property will be honored in 3D SceneViews. Future releases will include additional labelPlacement values for lines and polygons in 2D MapViews and 3D SceneViews.

polyline-labels

VectorTileLayer updates

In 2D MapViews, you can now update the style of a VectorTileLayer without having to reload it. This can be done with the use of new methods included in this release for getting and setting the paint and layout properties. Check out the VectorTileLayer from JSON sample to see this in action.

vtl-style

Take a screenshot of the MapView

Using MapView.takeScreenshot() you can now create a screenshot of the view and export it as an image. Different options like image format, quality, aspect ratio or image size can be specified. See the Take a screenshot of a SceneView sample to learn more about this feature. Support for SceneView.takeScreenshot() was added in version 4.9.

Large line and polygon datasets in a WebScene

In version 4.8 we added support for loading large point feature layers in a WebScene. With this release you can also add thousands of lines and polygons, allowing you to display and visualize large datasets containing features such as streets, rivers, parcels, and country borders.

largeData-sceneview

Enhanced 3D WebStyleSymbols

We added a new automatic level of detail to the 3D WebStyleSymbols, so that you can display tens of thousands of realistic trees, cars and other models, and maintain strong performance while zooming in and out. Check out the Visualize features with realistic WebStyleSymbols to see how to use them. For a list of available 3D models see the web style symbols guide page.

webstylesymbols-lod

PointCloudLayer filters

PointCloudLayers can now be filtered based on their attributes. PointCloudValueFilter shows points that belong to a certain class. PointCloudReturnFilter filters points using the return value of each point. See the Filtering points in a PointCloudLayer sample to learn how to use these filters. For example, you can use it to display only points that belong to vegetation:

pcl-value-filter

BuildingSceneLayer

Explore the fine details of buildings in scenes using the new BuildingSceneLayer. This new layer allows you to display and explore exterior and interior structures like facades, walls, doors and mechanical systems. The layer groups together BuildingComponentSublayers that are very similar to SceneLayers so you can apply renderers, customize popups with popupTemplates or filter by attributes using definitionExpression. BuildingSceneLayers can be published from Revit data with ArcGIS Pro 2.3. Check out the BuildingSceneLayer with Slice widget sample to learn more about BuildingSceneLayers.

building-scene-layer

New widgets

Slice widget

The Slice widget is a 3D analysis tool that can be used to reveal obstructed content in a SceneView. The slice widget can be applied to any layer type, making it possible to see inside buildings or to explore geological surfaces.

slice-widget

Sketch widget

The Sketch widget provides a simple UI for creating and updating graphics in a 2D MapView. By adding a Sketch widget to your application, you will be able to create new graphics or update existing graphics without having to write additional code. See the Sketch widget sample to learn more about Sketch widget.

sketch-geometries

Widgets for measuring area and distance

We added two new widgets for measuring in 2D MapViews. The AreaMeasurement2D widget calculates and displays the area and perimeter of a polygon. The DistanceMeasurement2D widget calculates and displays the distance between two or more points. See the Measurement in 2D sample for an example of both widgets.

measurement-line-2d

FeatureTemplates widget (Beta release)

The FeatureTemplates widget is part of the overall editing workflow. Its main purpose is to display templates from one or more feature layers. In addition to displaying templates, it is also possible to filter and group templates for an easier editing experience. See the updated FeatureLayer applyEdits sample to see this widget in action.

featureTemplates

Widget updates

Updates to FeatureForm widget

The FeatureForm widget has been updated to allow grouped field configurations. You can configure field groupings to display and organize form data. Use this widget, in combination with FeatureLayer.applyEdits, to enable an end user to update a feature's attribute on a specified editable feature layer(s). For an example of grouped field configurations, please refer to the Update Feature Attributes sample.

featureformgrouping

SketchViewModel updates

We introduced some breaking changes for SketchViewModel in this release based on user feedback. These changes will allow you to accomplish same functionality with less code. Please see this document for more information on these changes. In 4.10, you can select multiple graphics to rotate, scale or move. You can also specify if selected graphics can only be rotated, moved or scaled by setting SketchViewModel's defaultUpdateOptions or setting the updateOptions parameter of the update method.

Locate widget update

The Locate widget has been updated to now display a Popup once clicking on the resulting location.

Updates to Popup widget

The Popup widget UI has been redesigned to display action items differently.

Multiple actions on Popup in 4.9Multiple actions on Popup in 4.10
actions49actions410

Prior to version 4.10, a user would need to add event.stopPropagation() to allow manual display of a Popup with the view's click event. With 4.10 and onward, this event is handled directly in the Popup, rather than the View. Set the new autoOpenEnabled to false. This prevents the Popup from opening when the view is clicked.

view.popup.autoOpenEnabled = false;
view.on("click", function(event) {
  view.popup.open({
    // Set the popup
  });
});

A new property, lastEditInfoEnabled was added to the PopupTemplate. This property allows you to indicate whether to display editor tracking information (if enabled on the feature layer). If set to true, the popup displays similar to what is shown below.

showLastEditInfo

Better WebMap Support

In this release, we added support for line labeling. This means most web maps can now be read using the 4.x version of the ArcGIS API for JavaScript. Not yet supported web map features include WFS and time support.

API updates and enhancements

Breaking changes

Bug fixes and enhancements

  • BUG-000109959: Fixed an issue where the MapView.scale value differs between desktop browsers and mobile browsers.
  • BUG-000112925: The IdentifyResult.toJSON method was fixed to no longer return an empty JavaScript object.
  • BUG-000115254: Fixed an issue where vector tile layers did not render correctly on touch screen devices.
  • BUG-000115402: Fixed an issue where apps configured with Integrated Windows Authentication security caused services to disappear or become unresponsive after 30 minutes of sitting idle.
  • BUG-000115508: Fixed an issue where gridlines would occasionally display on basemaps while zooming in using mobile devices.
  • BUG-000115703: Fixed an issue when calling the refresh()method every second on a layer would only send a request every 6 seconds.
  • BUG-000116487: Fixed a problem when trying to add or remove a new format to the CoordinateConversion widget.
  • BUG-000116758: Changing a layer's listMode now correctly updates in the LayerList widget while working with a GroupLayer.
  • BUG-000117211: Fixed the sample Synchronize MapView and SceneView so that no errors no longer display in the console.
  • BUG-000117370: Fixed an issue where the Popup widget would not display fields correctly in a feature collection layer.
  • BUG-000117396: Fixed an issue where offsets were not honored when used when rendering client-side graphics with PictureMarkerSymbols.
  • BUG-000116667: Updated documentation for the Query's outSpatialReference property.
  • ENH-000115400: Added a comment in the Search widget and FeatureLayerSearchSource documentation specific to support for feature layers in the Search sources.
  • GEONET-222984 - support adding formats dynamically
  • GEONET-223936: Updating the map property on the MapView now works in IE11.
  • GEONET suggestion: Better accessibility for closed Expand widgets.
  • Added an enhancement to RequestOptions.responseType. When this value is image, the headers are no longer ignored.
  • Fixed a offset issue for symbols with an SVG-based path that had a non-square aspect ratio.
  • Fixed an issue where haloColor and haloSize properties of TextSymbol were not being properly honored.
  • Fixed an issue where the Layer.opacity property was affecting its label opacity as well.
  • Fixed an issue where the Print widget was not properly displaying the legend on the printout.
  • Fixed an issue with PrintTask to properly honor the LayerView.visible property.
  • Fixed an issue with printing a CSVLayer.
  • Fixed an issue with printing a FeatureLayer created from an array of client-side features.
  • Fixed an issue with properly honoring the angle, xoffset, and yoffset properties of the TextSymbol class when labeling features.
  • Improved the display of labels when multiple label classes are present and active in 2D MapViews.
  • The behavior of the MapView.html#goTo method has changed to zoom to fit the defined target, instead of zooming to the nearest level of detail (LOD).

Additional packages

Version 4.10 of the ArcGIS API for JavaScript uses ArcGIS Arcade 1.5 (no FeatureSet support), Dojo 1.14.0 (since 4.9), dgrid version 1.2.1 (since 4.5), and dstore version 1.1.2 (since 4.5). From Dojo 4 we use @dojo/framework version 4.0.0 (since 4.10).

Previous releases