October 2023
Maps SDK components (beta)With this release, we are introducing a brand-new web component library for building web mapping apps with minimal code. The component library currently consists of the 3 packages listed below, but will expand over time with more pre-built ArcGIS experiences (encapsulated into web components) that can be easily brought into your own app.
Map componentsThe @arcgis/map-components
package contains the map, scene, and all the JavaScript Maps SDK widgets wrapped as web components. While these components donât offer new capabilities, they are an alternative option for quickly building mapping apps including when integrating with frameworks.
In the example below, a web map with a legend is created using the arcgis-map
and arcgis-legend
components.
Use dark colors for code blocks Copy
1
2
3
<arcgis-map item-id="05e015c5f0314db9a487a9b46cb37eca">
<arcgis-legend position="bottom-right"></arcgis-legend>
</arcgis-map>
Coding components
The @arcgis/coding-components
package will eventually contain a wide range of tools, resources, code editors and utilities that support coding. Currently, only the Arcade editor component is supported, which allows the end user to create Arcade expressions that drive aspects of your map or app within your solution. They will have the same experience editing their Arcade expressions as they do in Map Viewer and the Arcade playground.
To learn more about the ArcGIS Maps SDK components, check out the following resources:
Improved experience for date and timeThis release introduces new ways to work with time enabled data, including new field types to better represent dates with different levels of information, and time zone support for 2D MapView and widgets.
New date field types (beta)Three new date-focused field types were added this release â date-only
, time-only
, and timestamp-offset
â to represent different levels of information when working with date and time values. See the table below for more information about each field type and when to use them.
date-only
Represents a specific date, without time, from the start of the day to the end of the day. Use this data type to store specific dates, such as a birth date, holiday, or historical date where time/time zone has no significance. time-only
Represents a time-of-day value, such as a daily alarm clock, limited to a specific time of day within the range of 00:00:00 - 23:59:59. Use this data type to represent a time without a date, such as opening and closing hours of different services, or to group times with similar characteristics, such as hours of high or low-activity in a cluster. timestamp-offset
Represents a date with time zone awareness, making it possible to work with dates and times so that any date and time value unambiguously identifies a single point in time. Use this data type when storing date and time information across multiple time zones. For example, crime and accidents data can be recorded in the time zone where the incident happened, which can help identify how different events are distributed throughout the day across different time zones.
With the new timestamp-offset
fields, we can compare data across time zones, as shown in the example below where we query for all incidents that occurred at 6:00 pm in their respective time zones.
FeatureLayer and MapImageLayer can be time aware based on date-only
and timestamp-offset
field types.
This release introduces time zone support on 2D MapView, providing control over how dates and times are represented to users within the view. In previous versions, the date and time values were always displayed in the time zone of the device. Setting the time zone can be useful for displaying events like weather alerts or emergency incidents that are best conveyed in the local time zone of the incident for coordination and response purposes.
TimeZoneLabel widgetThe newly added TimeZoneLabel widget can be used to display the MapView time zone.
Time zone support in widgetsDate values, including values from the date
and timestamp-offset
field types, will be displayed in the view's time zone by default in widgets that display dates. For widgets that can be used without a view, such as TimeSlider, FeatureTable, and FeatureForm, we added a timeZone
property to allow users to set the time zone on the widget directly.
Editor widget - additional considerations when working with time zones
Like other widgets, the Editor widget displays the date
field type in the MapView's timeZone by default. However, when working with the timestamp-offset
type, the data is displayed using the stored date values from the service. For example, if the stored value is 2023-09-11T22:39:05.242-0400
, then the Editor will present three inputs to edit the date (9/11/2023
), time (10:39:05 PM
), and time zone offset (GMT-4
) regardless of the MapView time zone. Here are a few points to consider if using an unknown
timezone:
unknown
, both date
and timestamp-offset
field types are shown in UTC.unknown
, but a layer has a preferred time zone, date
field types will display values with the preferred time zone that is set within the layer.unknown
, date
field types will display values using UTC.unknown
and working with timestamp-offset
field types, date is shown as-is, i.e. as it's stored within the raw data.UTC
time zone by default instead of the local time zone of the device. This will provide an accurate and unambiguous reference point for time and date calculations across the world. However, this may cause some date values defined without a time zone offset to be inaccurate. Please check the Notes section in the CSVLayer documentation for how to correct this.dateFieldsTimeZone
is specified.OrientedImageryLayer provides users the ability to manage oriented (non-nadir) images and visualize them using the OrientedImageryViewer widget. This layer is composed of discrete point features (or camera locations), each of which has a geometry that allows it to be rendered in a 2D MapView as a graphic with spatial context. These features also contain data attributes that provide additional information about the real-world feature they represent.
The OrientedImageryViewer widget allows users to explore and adjust their oriented images from the oriented imagery layers. Users can click on a map to view the best image in their collection that depicts that location. Users then can view assets from multiple directions, and enhance contrast, brightness and sharpening to better see these images.
New basemap stylesThis release brings support for new basemap styles with localized place labels from the basemap styles service (v2). These basemaps can be created from a string in the form of {provider}/{style}
, where provider is "arcgis" or "osm". See Basemap styles -> Requests for the full list of available styles.
The new Basemap.style property allows you to specify both the basemap ID and the language. If no language is specified, the app's current locale will be used to determine the language of the place labels.
Check out the new basemap styles in action in these tutorials: Change the basemap style and Change the basemap language.
NoteUse of the basemap styles service requires authentication via an API key or user authentication.
ArcGIS Outdoor basemap with Spanish place labels Feature-to-feature relationship editingThe Editor widget now has the ability to edit feature-to-feature relationship data. Prior to this release, editing was solely supported on data related via feature to table. Similar in experience, a relationship element must be configured within the FormTemplate for the Editor to support editing related data. If the form's template is not set or is not configured to contain relationship elements, the Editor will not display the option to edit the relationship data. For additional information on editing related records, please refer to the Editor widget documentation.
Enhanced polygon label placementWe enhanced label placement for polygon features of non-MapImageLayer layers in 2D MapViews. Polygon labels are now better placed inside their features. This is especially apparent for irregular shapes, such as the states of Florida and Louisiana. Compare the difference in the images below.
With View.theme, it is possible to customize the color of interactive tools in both 2D MapViews and 3D SceneViews. A custom theme can complement a web siteâs branding, or improve contrast and legibility when tailored to the map design.
This new property allows for the creation of customized apps that are more user-friendly and meaningful. The theming influences sketching, snapping, as well as all analysis tools: measuring, dimensioning, slicing, line of sight, and the elevation profile.
See the new sample below to explore how custom theme colors can better fit your application's style.
3D updatesWhen loading a VectorTileLayer with a background color set, this color will now be displayed instead of the default grid. This offers a smoother transition when navigating between different parts of a map that haven't loaded yet. This new behavior can now be observed with many of our official basemaps. Using the ArcGIS Vector Tile Style Editor, you can also add a background color to your own vector tile layers to benefit from this change.
Layer updates Saving layers as a portal itemStreamLayer, SubtypeGroupLayer, ImageryLayer, ImageryTileLayer and GroupLayer can be saved to a portal item in ArcGIS Online and ArcGIS Enterprise with the save
and saveAs
methods on respective layers. This allows you to define a renderer with 2D symbology and popupTemplate etc. on your layer and then save it to a PortalItem. Saving many related layers into a GroupLayer portal item provides a new and powerful way to share thematic content without a map.
The MediaLayer now supports animated GIF and APNG images. AnimationOptions are used to control the animation of the image (such as duration
, repeatType
, etc.). See it in action in the new MediaLayer with animated GIF sample.
The new initialExtent property on VectorTileLayer allows you to easily zoom to the bounds of the tiles when the source of the layer's style references a TileJSON resource.
Watch for updating data on feature layer viewsThe new dataUpdating
property on FeatureLayerView, CSVLayerView, GeoJSONLayerView, OGCFeatureLayerView and WFSLayerView indicates if the layer view is updating its data and new features are being fetched. Watch this property along with the updating
property to know when to re-execute client-side queries after an update cycle. This property is currently only supported in 2D MapView. See it in action in the updated Query statistics client-side sample.
The rasterFunctionUtils module offers over 100 functions that create RasterFunctions for imagery processing. Utility methods in this module make raster function generation easier when applying raster functions to ImageryLayer and ImageryTileLayer.
Custom chart colorsAt this release, chart colors can be customized using the new colors
property on the ChartMediaInfoValue class. These colors are respected when displaying charts in the Popup, Features, and Feature widgets. Customizing chart colors is as simple as creating an array of color objects that is equal to the length of the fields property.
Use dark colors for code blocks Copy
1
2
3
4
5
const chartMediaInfoValue = new ChartMediaInfoValue({
colors: [new Color("red"), new Color("yellow"), new Color("green"), new Color("blue")],
// colors will be applied to each field in their respective order
fields: ["field1", "field2", "field3", "field4"],
});
The default colors used in charts were updated to meet the WCAG contrast ratio accessibility standards for both light and dark theme. Symbology can be set with these colors by using the new "Olympic Sunset" color ramp.
Popup design updates Refactor to use Calcite Design SystemThe Popup widget has been refactored to utilize Calcite Design System components. This update results in the action bar being anchored below the Popup header and the pagination buttons being moved to the opposite side of the Popup from the feature menu button.
Feature menu layer groupingThe feature menu for viewing a list of features selected in the Popup or Features widget now groups the features by layer. Now you can easily distinguish which layer the feature resides in with the list view. This change is also applied when browsing clustered features.
2D performance in non-GPU environmentsGPUs are important for basic performance in virtualized environments. When no hardware acceleration is detected, the API library automatically attempts to improve map interaction and user experience for some Virtual Desktop Infrastructure (VDI) desktop environments and Remote Desktop Session Host (formerly called Terminal Server) sessions. This is accomplished by switching to a degraded 2D rendering mode.
SimpleMarkerSymbol outline stylesWe've added support for outline styles on SimpleMarkerSymbol in a 2D MapView. All of the styles supported on SimpleLineSymbol (dash
, dot
, etc.) can now be used in the outline of your SimpleMarkerSymbol.
We added the following scientific color ramps to the high-to-low
continuous color theme and the heatmap smart mapping APIs.
These color ramps are great options for visualizing data along a continuous color ramp, and are especially friendly for people with color vision deficiencies.
Big integer support (beta)The big-integer
data type is a 64-bit signed integer that can store very large whole number integer values with the range of -9007199254740991 and 9007199254740991. Numbers that fall outside of this range may be rounded resulting in graphical or performance issues. Web applications can only edit whole numbers between -9007199254740991 and 9007199254740991. Any attempts to edit a number value higher or lower than these thresholds will not work and those edits will not be saved.
The API throws warning about big integer fields in the console about its known limitations. Please use the following the following flag to disable the warnings.
Use dark colors for code blocks Copy
1
2
3
4
5
6
7
<script>
var esriConfig = {
has: {
"big-integer-warning-enabled": false
}
}
</script>
Printing updates
We laid the foundation for printing charts and reports with an ArcGIS Enterprise 11.2 print service. This is currently available when working with print and PrintViewModel. Similar updates are planned for the Print widget.
Charts are stored inside an operational layer definition, and can be printed using PrintTemplate.includeCharts. Typically, a report will be printed with a map in a multi-page pdf
file. Reports require templates, similar to layouts, which can be defined using the PrintTemplate.report or PrintTemplate.reportItem property. Lastly, the PrintTemplate.reportOptions property will link the various report elements to their data source.
We also added TemplateOptions.includeTables to add more options for printing tables. Note that PrintTemplate.includeTables was added at version 4.26.
FeatureService and VersionManagementServiceA new FeatureService class was added to represent the feature service, which contains all its FeatureLayers and non-spatial tables. The FeatureService
contains URLs to the version management service or utility network service if the feature service was published with a utility network or with versioning enabled. The FeatureService
class can be used to make edits across multiple layers and tables that belong to the feature service in a single applyEdits() call. Take a look at Perform Edits using the Feature Service to learn more about editing using the new FeatureService
class.
A new VersionManagementService class was added to represent the version management service, and expose the service capabilities. The VersionManagementService
can be constructed from either a URL to a version management service, or also by using the FeatureService.versionManagementServiceUrl when working with a FeatureService
. The VersionManagementService
provides support for branch versioning workflows with the following capabilities:
The Editor widget now supports utility network rules. The Editor will detect if there is a loaded utility network on the map, and if there is, then it will apply the rules defined by the utility network. The image below shows an example of creating a Circuit Breaker from the Electric Distribution Device layer. As the cursor hovers over the features on the map, one will notice that the Circuit Breaker cannot snap to the Transformer or Pole features. However, the Circuit Breaker feature can snap to the Medium Voltage line endpoint from the Electric Distribution Line layer. This behavior is defined by the network rules, and thus it is now respected by Editorâs snapping workflows.
Limitation: Currently, it is possible for a point to snap to another point with a junction-junction connectivity network rule type. WebMaps containing SubtypeGroupLayers are currently not supported.
UtilityNetworkAssociations widget settingsThis release introduces a new settings section in the UtilityNetworkAssociations widget to configure the line symbology for connectivity and structural attachment associations. These settings can be enabled from the widget's visible elements property.
Added classes, properties, methods, eventsesri/intl
esri/layers/FeatureLayer
esri/layers/GroupLayer
esri/layers/GroupLayer
esri/layers/ImageryLayer
esri/layers/ImageryTileLayer
esri/layers/ImageryTileLayer
esri/layers/KnowledgeGraphLayer
esri/layers/KnowledgeGraphLayer
esri/layers/MapImageLayer
esri/layers/SceneLayer
esri/layers/StreamLayer
esri/layers/StreamLayer
esri/layers/SubtypeGroupLayer
esri/networks/Network
esri/networks/UtilityNetwork
esri/rest/support/PrintTemplate
esri/views/MapView
esri/widgets/FeatureForm/GroupInput
esri/widgets/Editor
createFeaturesSection
and editFeaturesSection
to visibleElements.esri/widgets/Features/FeaturesViewModel
esri/widgets/Features/FeaturesViewModel
esri/widgets/FeatureTemplates
esri/widgets/UtilityNetworkTrace
style
to esri/BasemapuserPrivilegesApplied
to esri/configwkt2
to esri/geometry/SpatialReferencename
to esri/geometry/support/MeshComponentpersistenceEnabled
to esri/layers/BaseDynamicLayer, esri/layers/BaseElevationLayer, esri/layers/BaseTileLayer, esri/layers/BingMapsLayer, esri/layers/BuildingSceneLayer, esri/layers/CSVLayer, esri/layers/DimensionLayer, esri/layers/ElevationLayer, esri/layers/FeatureLayer, esri/layers/GeoJSONLayer, esri/layers/GeoRSSLayer, esri/layers/GraphicsLayer, esri/layers/GroupLayer, esri/layers/ImageryLayer, esri/layers/ImageryTileLayer, esri/layers/IntegratedMeshLayer, esri/layers/KMLLayer, esri/layers/knowledgeGraph/KnowledgeGraphSublayer, esri/layers/KnowledgeGraphLayer, esri/layers/Layer, esri/layers/LineOfSightLayer, esri/layers/MapImageLayer, esri/layers/MapNotesLayer, esri/layers/MediaLayer, esri/layers/OGCFeatureLayer, esri/layers/OpenStreetMapLayer, esri/layers/PointCloudLayer, esri/layers/RouteLayer, esri/layers/SceneLayer, esri/layers/StreamLayer, esri/layers/SubtypeGroupLayer, esri/layers/TileLayer, esri/layers/UnknownLayer, esri/layers/UnsupportedLayer, esri/layers/UnsupportedLayer, esri/layers/VectorTileLayer, esri/layers/VoxelLayer, esri/layers/WCSLayer, esri/layers/WebTileLayer, esri/layers/WFSLayer, esri/layers/WMSLayer, esri/layers/WMTSLayerdateFieldsTimeZone
to esri/layers/CSVLayer, esri/layers/FeatureLayer, esri/layers/GeoJSONLayer, esri/layers/MapImageLayer, esri/layers/SubtypeGroupLayer, esri/layers/WFSLayerpreferredTimeZone
to esri/layers/FeatureLayer, esri/layers/MapImageLayer, esri/layers/SubtypeGroupLayeranimationOptions
to esri/layers/support/ImageElementtype
to esri/layers/support/SublayertimeZone
to esri/layers/support/TimeInfo, esri/views/MapView, esri/webmap/InitialViewProperties, esri/widgets/FeatureForm, esri/widgets/FeatureForm/FeatureFormViewModel, esri/widgets/FeatureTable, esri/widgets/FeatureTable/FeatureTableViewModel, esri/widgets/TimeSliderinitialExtent
to esri/layers/VectorTileLayerrasterFields
to esri/layers/WCSLayercolors
to esri/popup/content/support/ChartMediaInfoValuesourceJSON
to esri/portal/PortalGroupprivileges
to esri/portal/PortalUserparamName
to esri/rest/support/ParameterValueextent
to esri/views/GroundViewview
to esri/views/layers/BuildingSceneLayerView, esri/views/layers/CSVLayerView, esri/views/layers/DimensionLayerView, esri/views/layers/FeatureLayerView, esri/views/layers/GeoJSONLayerView, esri/views/layers/GeoRSSLayerView, esri/views/layers/GraphicsLayerView, esri/views/layers/ImageryLayerView, esri/views/layers/KMLLayerView, esri/views/layers/LayerView, esri/views/layers/OGCFeatureLayerView, esri/views/layers/PointCloudLayerView, esri/views/layers/SceneLayerView, esri/views/layers/StreamLayerView, esri/views/layers/WFSLayerViewdataUpdating
to esri/views/layers/CSVLayerView, esri/views/layers/FeatureLayerView, esri/views/layers/GeoJSONLayerView, esri/views/layers/OGCFeatureLayerView, esri/views/layers/WFSLayerViewtheme
to esri/views/MapView, esri/views/SceneView, esri/views/Viewhidden
to esri/webscene/SlideincludeTimeOffset
to esri/widgets/FeatureForm/FieldInputcollapsed
to esri/widgets/Features, esri/widgets/Popuptemplate
to esri/widgets/FeatureTable/FieldColumndisabled
to esri/widgets/FeatureTemplates, esri/widgets/FeatureTemplates/FeatureTemplatesViewModelicon
to esri/widgets/Home, esri/widgets/Locate, esri/widgets/TrackprintTimeout
to esri/widgets/Print/PrintViewModelincludeTables
to esri/widgets/Print/TemplateOptionssave
to esri/layers/GroupLayer, esri/layers/ImageryLayer, esri/layers/ImageryTileLayer, esri/layers/StreamLayer, esri/layers/SubtypeGroupLayersaveAs
to esri/layers/GroupLayer, esri/layers/ImageryLayer, esri/layers/ImageryTileLayer, esri/layers/StreamLayer, esri/layers/SubtypeGroupLayerclone
to esri/layers/ImageryLayer, esri/layers/ImageryTileLayer, esri/layers/SceneLayer, esri/layers/StreamLayer, esri/layers/SubtypeGroupLayer, esri/renderers/support/UniqueValueClass, esri/renderers/support/UniqueValueGroupgetTimeZone
to esri/layers/support/FieldsIndextoScreenClosest
to esri/views/2d/ViewStatestartCreateFeaturesWorkflowAtFeatureEdit
to esri/widgets/Editor/EditorViewModelremoveAllResultAreaGraphics
to esri/widgets/UtilityNetworkTrace/UtilityNetworkTraceViewModel5.84.0
has been deprecated since 4.27. This is related to bug fixes in Webpack.The watchUtils
class has been deprecated since version 4.24 and has been removed from the API at this release. This is a breaking change and applications will need to use reactiveUtils
instead, which provides significantly improved utilities and convenience functions for watching properties inherited from Accessor. Check out the Why you should be using reactiveUtils instead of watchUtils blog for more details on how to migrate from watchUtils
to reactiveUtils
.
The @types/arcgis-js-api
package was deprecated in NPM at 4.28. This package was used in AMD-based applications. The definition files are available from the jsapi-resources archive, or NPM install arcgis-js-api
. These changes do not affect applications using ES modules with @arcgis/core
.
IPromise
TypeScript definition was removed at 4.28. Use native Promise
instead.
All instances of *Constructor
TypeScript definitions were removed at 4.28. Update usage of __esri.ClassConstructor
to typeof __esri.Class
, or import
the module from typings and change the type assignment to typeof Class
, for example:
Use dark colors for code blocks Copy
1
2
3
4
5
6
7
8
9
10
11
// Type definitions at 4.27 and earlier
type IEsriDeps = [
__esri.MapConstructor,
__esri.MapViewConstructor
];
// Type definitions at 4.28 and later
type IEsriDeps = [
typeof __esri.Map,
typeof __esri.MapView
];
false
.UTC
time zone by default instead of the local time zone of the device. See more in the time zone support in layers section of the release notes.national-geographic
named basemap was removed at 4.28. Four of the other legacy basemaps have been redefined to their vector equivalents because they were based on outdated services that are in Mature Support: topo
, streets
, gray
and dark-gray
.auto
and authorization-code
values for OAuthInfo.flowType no longer check if the popup
property is set to true
or false
. This change affects applications that use the auto
flowType and set the popup
property to true
. The callback page being used needs to be updated to support two-factor authentication. To aid in this, the default oauth-callback.html has been updated to allow for the two-step approach and will still work if using the one-step flow.date
fields is now short-date-short-time
rather than long-month-day-year
in the Popup, Features, or Feature widgets. For example, a date that may have previously appeared as December 30, 1997
will now appear as 12/30/1997 6:00 PM
.true
to false
.pickClosestTarget
in the GoToOptions2D or the ToScreenOptions2D to false
to disable this behavior.maxInlineActions
property on the Popup widget has been removed due to the widget being refactored to utilize Calcite components.Editor
widget's allowedWorkflows property to only allow updates will result in displaying the Create features
header. If this is not needed, set its visibility by setting the Editor's visibleElements createFeaturesSection
property to false
. Note that if this is set, it removes the heading completely, regardless if there are some layers within the map that do have permissions to create new features. Additional work is planned in an upcoming release to make this experience more intuitive.The following classes, methods, properties and events have been deprecated for at least 2 releases and have now been removed from the API:
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 enhancementspath
were only partially rendered.PointBarrier
class.Number
.cannot set properties of null even though graphic valid
.featureMenuOpen
option to true
in Features.open() and Popup.open() was not opening a list of selected features.heading
VisibleElement on the Features widget to false
was not hiding the heading in the UI.minScale
and maxScale
.dir="rtl"
.barrierType
documentation for PointBarrier, PolygonBarrier, and PolylineBarrier.style
on SimpleMarkerSymbol.outline in a 2D MapView.Time Unspecified
is selected.zDefault
values set on editable FeatureLayers during geometry creation and update workflows.*
next to the field names for required fields.Version 4.28 of the ArcGIS Maps SDK for JavaScript uses ArcGIS Arcade 1.24 (since 4.28).
Version 4.28 of the ArcGIS Maps SDK for JavaScript uses Calcite Design System, version 1.9.2.
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