June 2022
Pie chart renderingThe PieChartRenderer allows you to visualize multiple attribute values of a feature in a point or polygon layer in a 2D MapView. The value of each pie slice can be determined by a field value or Arcade expression. Use the PieChartRenderer with visualVariables to vary the size of the pie chart based on an Arcade expression, such as the sum of its fields.
MediaLayer (released in beta) is used to add static image and video elements on the map the specified geographic location. Coordinates of the image and video elements are projected to the view's spatial reference.
To see the MediaLayer in action, check out the new MediaLayer with images and MediaLayer with video samples.
Client-side binningBinning (released in beta) is a new feature reduction method added as an alternative to clustering and heatmaps in 2D MapViews. Binning visualizations aggregate point data client-side by geohash cell based on a provided level of detail. You can define how you want to aggregate the numerical fields within each bin, and use them in the configuration of the bin's labels, popups, and rendering.
Server-side binning, which will allow you to display aggregates of very large datasets, will be added at a future release.
To learn more about binning, be sure to check out the following new samples: Intro to binning, Binning with aggregate fields, Binning - Filter by category, and Summarize binned data using Arcade
Improved HeatmapRendererHeatmapRenderer now renders with WebGL, which means it can now take advantage of the following benefits:
Static heatmaps
HeatmapRenderer added a referenceScale property, which allows you to lock the heatmap visualization at a specific scale so it will appear consistent when zooming in and out.
See the images below to compare the differences between static and dynamic (default) heatmaps at various scales above and below the reference scale, or check out the Create a static heatmap sample to see it in action.
API updates
The HeatmapRenderer's underlying algorithm for calculating density was updated to use kernel density instead of Gaussian blur. This will improve consistency between heatmaps created in web apps when loaded in future versions of ArcGIS Pro. This update required the following updates to the HeatmapRenderer's properties:
blurRadius
was replaced by radiusminPixelIntensity
was replaced by minDensitymaxPixelIntensity
was replaced by maxDensityMake your scenes more immersive by adding weather effects for rain and snowfall. Besides changing the cloud coverage, you can adjust the amount of precipitation or cover your 3D content in snow. Weather settings are now persisted in web scenes and slides, making it easier to author and share different scenarios.
A new weather sample uses effects to visualize extreme weather scenarios in Utrecht.
OpenStreetMap buildings and treesEnhance your 3D visualizations with globally available 3D buildings and trees using new OpenStreetMap (OSM) layers from the ArcGIS Living Atlas. Explore the data using preformatted popup information and detailed 3D building models where available. Use the new layers as context in your scenes and apply spatial filters for areas where you want to place your own data.
Visit your favorite places in the new OSM buildings and trees scene:
Voxel layer variablesChange the appearance of your voxel data using previously published variables. Toggle between visualizing the variables as surfaces or using the full volume of the layer. In addition, a new class VoxelVolumeStyle allows you to exaggerate and offset the rendered voxels to better understand its spatial characteristics.
Try out these new rendering capabilities in a new voxel layer sample:
Improved editingNew tooltips and labels provide useful information when creating or updating existing features with the Sketch or Editor widgets. Labels indicate the length of Polygon and Polyline segments while tooltips show information about the overall geometry and tool in use. This can be total length for lines or area for polygons, as well as rotation, scale, and distance. Additionally, elevation is shown when editing absolute heights.
Try out these new capabilities using the Sketch in 3D sample:
Blend modesCreate new and aesthetically pleasing visualizations of the ground using blend modes in 3D. You can use the same blend modes already available in 2D to combine multiple tiled layers in your scene.
Check out a new sample that blends a hillshade layer over an OSM basemap to provide more contrast and spatial awareness.
Daylight widgetExplore your scenes by changing the lighting type directly in the Daylight widget. Instead of using a realistic sun position, minimize shadows and evenly light your scene by positioning the light source relative to the camera. Virtual light settings are now also persisted in web scenes and slides.
Try out the different lighting options in the updated Daylight widget sample:
Persist line of sight layerLine of sight analyses can be persisted as a LineOfSightLayer in web scenes to share and present your analyses. LineOfSightLayer can be used as any other layer. For example, it can be visible or invisible per slide in a web scene. With a new interactive property on LineOfSightAnalysisView3D you can enable interacting with the analysis without creating a widget or view model.
Persist scene layer filters (beta)Persist spatial- and object id based filters for SceneLayer, either through the web scene or layer item directly. Two different types of spatial relationships allow you to mask a selected area ("disjoint"
) or display only a selected area ("contains"
), for example to evaluate different scenarios in urban planning.
The Directions widget is now integrated with the RouteLayer, which means that it should now be instantiated with a new or existing RouteLayer. New functionality includes the ability to save routes and modify the visibleElements in the Directions widget UI. The Directions widget can also open and edit existing route portal items. RouteLayer can use custom symbology with the defaultSymbols property, and now works in both 2D MapViews and 3D SceneViews.
The old workflow of creating a Directions widget without a RouteLayer is deprecated and will be a breaking change at a future release. Additionally, some properties on Directions have been deprecated in favor of using the RouteLayer properties, such as routeServiceUrl
, routeSymbol
, and stopSymbols
. To customize symbology with the Directions widget, we recommend using the RouteLayer defaultSymbols property.
Arcade is an expression language that allows you to calculate values and create custom content in various profiles, such as popups, renderers, labels, and forms. Most of the time, the Arcade profiles that are part of the API are adequate for application requirements. However, sometimes developers need the ability to execute Arcade expressions in their own custom profiles. Starting at version 4.24, app developers now have the ability to compile and execute Arcade expressions in their own custom profiles. That means you can use Arcade where you want, how you want. In your custom profile, you get to define the valid data inputs, functions, and return types in addition to the context where expressions can execute.
This has been a highly requested feature since Arcade was first released. With the Arcade executor API, you will be able to do the following:
The following sample demonstrates how to execute an expression from a webmap and summarize the results in a chart.
Saving feature layersFeatureLayers can be saved to ArcGIS Online and ArcGIS Enterprise with the save()
and saveAs()
methods. This allows you to define a renderer with 2D symbology, popupTemplate, featureReduction, etc. on your feature layer and then save it to a PortalItem.
Use dark colors for code blocks Copy
1
2
3
4
const portalItem = new PortalItem({
title: "My feature layer",
});
featureLayer.saveAs(portalItem);
MapView and SceneView hitTest updates
MapView.hitTest and SceneView.hitTest hit test results now return GraphicHit, MediaHit, and RouteHit results. The existing apps that use hitTest()
method should be updated to check for the result type.
At this release, we made the following enhancements to CIMSymbol:
Support for random marker placement inside polygons. CIMMarkerPlacementInsidePolygon
now supports gridType: "Random"
in addition to Fixed
. Use the randomness
property to control the amount of randomness.
Improved animation support. We enhanced our animation support in CIMPictureMarker symbol layers, by adding support for animatedSymbolProperties
, which allow you to customize the animation of GIF and APNG symbols, through properties such as duration
, randomizeStartTime
, and repeatType
.
We added support for a trailCap
property on FlowRenderer that allows you to change the starting cap of the streamlines. Round caps will only be applied to the renderer if the trailWidth
is greater than 3 pts.
Charts within a popup's MediaContent now respect the renderer colors of the configured fields in the chart when visualizing data with predominance, dot density, or the new pie chart renderer. Fields represented by Arcade expressions are not supported at this time and are planned for a future release.
Feature menuWhen hovering over items within the popup feature menu, the corresponding feature will automatically be highlighted in the map.
FeatureTableThe FeatureTable widget has been updated to provide more extensibility for table and column configuration. New classes were added to allow this via template configurations. Similar to how popup and FeatureForm widgets use templates, the FeatureTable's template follows the same premise and provides the ability to configure individual columns, and starting at 4.24, grouped columns via their respective templates.
Print - north arrowThe Print widget now has an option to Include north arrow
in the Advanced options. Note that the print service must have a north arrow configured on a per-layout basis for this option to be available.
Note that print also has a north arrow option when using the PrintTemplate.layoutOptions.elementOverrides property.
ScaleRangeSliderThe ScaleRangeSlider widget now provides a UI when working with layers that are not available at all scales. When used with a layer with lods
that differ from the map, the ScaleRangeSlider will display the unavailable ranges with a dashed line. The minScaleLimit
and maxScaleLimit
properties can be used to determine the beginning and end of the available range.
We also added a new property to ScaleRangeSlider.visibleElements, scaleMenus
, that allows you to hide the scale dropdown menus from the widget's UI.
If a WebMap is configured with a default site (without a default facility or level), then the FloorFilter widget will display the list of facilities for that site instead of the list of sites.
Layer updates MapImageLayerIf MapServer layers do not support the query operation, popups can now be opened using the identify operation if the layers support it. This can be checked with the MapImageLayer.capabilities.operations.supportsIdentify property.
WCSLayerWCSLayer has improved third party server compatibility, and is now out of beta.
WebGL2 updateStarting at version 4.24, the API uses WebGL2 where possible, otherwise falls back to WebGL1. WebGL2 support is integrated into modern browsers and provides improved support for the capabilities of modern GPUs.
If you are building custom WebGL layers, to take advantage of version-specific features or extensions your code will need to be updated to detect the context version, and to use the correct extension or native WebGL feature. Here is an example code snippet using the WebGL1-only extension WEBGL_color_buffer_float
:
Use dark colors for code blocks Copy
1
2
3
4
5
6
7
8
9
10
// Only needed for custom WebGL layers
const gl = this.context;
if (gl.getParameter(gl.VERSION).startsWith("WebGL 1.0")) {
const floatBufExt = gl.getExtension("WEBGL_color_buffer_float");
gl.renderbufferStorage(gl.RENDERBUFFER, floatBufExt.RGBA32F_EXT, 256, 256);
} else {
// Float render targets use different extension
const floatBufExt2 = gl.getExtension("EXT_color_buffer_float");
gl.renderbufferStorage(gl.RENDERBUFFER, gl.RGBA32F, 256, 256);
}
Added classes, properties, methods, events
esri/analysis/LineOfSightAnalysisObserver
esri/analysis/LineOfSightAnalysisTarget
esri/layers/CSVLayer
esri/layers/GroupLayer
esri/layers/support/ElevationSampler
esri/layers/VoxelLayer
esri/renderers/HeatmapRenderer
esri/rest/networks/support/Association
esri/rest/support/RouteParameters
esri/rest/support/RouteResult
esri/widgets/Daylight/DaylightViewModel
esri/widgets/Directions
esri/widgets/Directions/DirectionsViewModel
esri/widgets/FeatureTable
esri/widgets/FeatureTable/FeatureTableViewModel
esri/widgets/LayerList/ListItem
esri/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel
parseTree
to esri/core/sql/WhereClausegeometryType
to esri/layers/CSVLayer, esri/rest/support/DataLayerisTable
to esri/layers/CSVLayer, esri/layers/GeoJSONLayerdefaultSymbols
to esri/layers/RouteLayerfilter
to esri/layers/SceneLayerhasMultidimensionalTranspose
to esri/layers/support/RasterInfotimeReference
to esri/layers/support/TimeInfofieldName
to esri/popup/content/support/ChartMediaInfoValueSeriestrailCap
to esri/renderers/FlowRenderercacheHint
to esri/rest/support/AttachmentQuery, esri/rest/support/RelationshipQuerytype
to esri/rest/support/DirectionLine, esri/rest/support/DirectionPoint, esri/rest/support/PointBarrier, esri/rest/support/PolygonBarrier, esri/rest/support/PolylineBarrier, esri/rest/support/RouteInfo, esri/rest/support/Stop, esri/views/3d/analysis/AreaMeasurementAnalysisView3D, esri/views/3d/analysis/DirectLineMeasurementAnalysisView3D, esri/views/3d/analysis/LineOfSightAnalysisView3D, esri/webscene/Lightinganalysis
to esri/views/3d/analysis/AreaMeasurementAnalysisView3D, esri/views/3d/analysis/DirectLineMeasurementAnalysisView3D, esri/views/3d/analysis/LineOfSightAnalysisView3D, esri/views/3d/analysis/SliceAnalysisView3Dvisible
to esri/views/3d/analysis/AreaMeasurementAnalysisView3D, esri/views/3d/analysis/DirectLineMeasurementAnalysisView3D, esri/views/3d/analysis/LineOfSightAnalysisView3D, esri/views/3d/analysis/SliceAnalysisView3Dinteractive
to esri/views/3d/analysis/LineOfSightAnalysisView3D, esri/views/3d/analysis/SliceAnalysisView3Dprecipitation
to esri/views/3d/environment/RainyWeathergeotriggersInfo
to esri/WebMapweather
to esri/webscene/Environmentlabel
to esri/widgets/CoordinateConversion/support/FormatvisibleElements
to esri/widgets/Directions, esri/widgets/WeatherlabelOptions
to esri/widgets/Editor, esri/widgets/Editor/EditorViewModel, esri/widgets/Sketch, esri/widgets/Sketch/SketchViewModeltooltipOptions
to esri/widgets/Editor, esri/widgets/Editor/EditorViewModel, esri/widgets/Sketch, esri/widgets/Sketch/SketchViewModelminLength
to esri/widgets/FeatureTable/FieldColumnhidden
to esri/widgets/LayerList/ListItem, esri/widgets/TableList/ListItembrowseClusterEnabled
to esri/widgets/Popup/PopupViewModelnorthArrowEnabled
to esri/widgets/Print/TemplateOptionsown
to esri/core/Accessor and all classes that inherit AccessorremoveFlagsOnLoadWatcher
to esri/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModelesri/rest
folder. This will make it easier to incorporate your code into a more modular app design, and also reduce unnecessary dependencies (you only import what you want). The new rest modules are functions, which do not require constructors, so you can use their methods immediately.date
and displayUTCOffset
have been removed from the VirtualLighting since this lighting type does not depend on the date and time. But this means that the view.environment.lighting
property does not always have a date
or displayUTCOffset
property. For some applications that assume that this property always exists this can be a breaking change.The following classes, methods, properties and events have been deprecated for at least 2 releases and have now been removed from the API:
The following tasks have been deprecated for at least 3 releases and have now been removed from the API (expand to read more):
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 enhancementslayer.type
) then you must watch the listItem for updating
to be false
before checking these properties.100151 libtess.js:13
error.activeBasemap
programmatically to a named basemap id.dynamicDataSource
so that they can no longer be persisted, as they are not compliant with our persistence specifications.globalId
specification in the attachment
property of an AttachmentEdit must be an ArcGIS generated global ID.clippingArea
border in local mode.Version 4.24 of the ArcGIS Maps SDK for JavaScript uses ArcGIS Arcade 1.17 (since 4.23).
Version 4.24 of the ArcGIS Maps SDK for JavaScript uses Calcite Design System (Beta), version 1.0.0-beta.82.
How to access the SDKRetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4