Releases: dymaptic/GeoBlazor
v4.4.2
No changes, patch release to fix build error for Pro NuGetPackage
What's Changed
- Release v4.2.0 by @TimPurdum in #464
- Release v4.3.0 by @TimPurdum in #483
- Added featurelayer tests by @magmoe in #474
- Add loadProtobuf to Layer.Load by @TimPurdum in #485
activatorutilitesconstructorattribute validation console app by @seahro in #476- measurement widgets and sample by @TimPurdum in #488
- Feature/open basemaps by @TimPurdum in #489
- Samples fixes by @TimPurdum in #490
- .NET 10 Support by @TimPurdum in #491
- Fix SceneView navigation toggle and improve Pro layer fallback handling by @TimPurdum in #498
- Fix SearchWidget events not returning full objects (#499) by @TimPurdum in #500
- Fix MapImageLayer.GetSublayers JS reference population (Issue #492) by @TimPurdum in #494
Full Changelog: v4.3.0...v4.4.2
v4.4.1
No changes, patch release to fix build error for Pro NuGetPackage
What's Changed
- Release v4.2.0 by @TimPurdum in #464
- Release v4.3.0 by @TimPurdum in #483
- Added featurelayer tests by @magmoe in #474
- Add loadProtobuf to Layer.Load by @TimPurdum in #485
activatorutilitesconstructorattribute validation console app by @seahro in #476- measurement widgets and sample by @TimPurdum in #488
- Feature/open basemaps by @TimPurdum in #489
- Samples fixes by @TimPurdum in #490
- .NET 10 Support by @TimPurdum in #491
- Fix SceneView navigation toggle and improve Pro layer fallback handling by @TimPurdum in #498
- Fix SearchWidget events not returning full objects (#499) by @TimPurdum in #500
- Fix MapImageLayer.GetSublayers JS reference population (Issue #492) by @TimPurdum in #494
Full Changelog: v4.3.0...v4.4.1
v4.4.0
GeoBlazor Core v4.4.0 Release
While there are breaking changes in 4.4.0, every effort was made to keep the impact on high-use features as low as possible.
Breaking Changes
Namespace Changes
GeoLocationOptionsmoved fromdymaptic.GeoBlazor.Core.Componentstodymaptic.GeoBlazor.Core.OptionsInitialViewProperties,WebsceneApplicationProperties, andWebsceneInitialViewPropertiesmoved fromdymaptic.GeoBlazor.Core.Componentstodymaptic.GeoBlazor.Core.Model
Removed Classes
These classes were not being referenced/implemented and will return in Core or Pro when fully implemented.
Weather- multiple related classesLighting- multiple related classesSpriteSource- multiple related classesSlide- multiple related classes- Numerous internal-use interfaces
DateTimePickerInput,Environment,Presentation,ServiceEdits,Shading
Removed Members (Properties/Methods)
SetObjectIdFieldonFeatureLayer,CSVLayer,WFSLayer: cannot be set on layers after they are loaded.SetGeometryTypeonCSVLayer,WFSLayer: cannot be set on layers after they are loaded.SetHighlightOptionsandGetHighlightOptionsonCSVLayerView,FeatureLayerView,GraphicsLayerView,ImageryLayerView, andWFSLayerView:HighlightOptionsis being deprecated in favor ofMapView.Highlights.SetViewandGetViewonExpandViewModel: cannot be set after initial load.
Changed Signatures
LocationService.AddressesToLocations: multiple signatures were re-organized; should still have all overload options availableMapView.OnJavascriptError: return type changed fromvoidtoTask- Type of
ElevationInfoproperty onCSVLayer,FeatureLayer,GraphicsLayer, andWFSLayerconsolidated to type ofElevationInforather than individual types - Incorrect type fixes: (
objecttypes do not deserialize correctly)DynamicMapLayer.MapLayerId- changed frominttolong?to support longer IDs and nullTemporalDomain.UnitsandValidateServiceEdits.EditedFeatures- changed fromobject?tostring?WMSLayer.DimensionsandWMSSublayer.Dimensions- changed fromIReadOnlyList<object>?toIReadOnlyList<IWMSLayerDimension>?
- Renamed/Changed types:
LegendViewModel.LayerInfos- renamed fromIReadOnlyList<LegendViewModelLayerInfos>?toIReadOnlyList<LegendViewModelLayerInfo>?ImageryTileLayer.Interpolation- renamed fromInterpolation?toPixelInterpolation?WebSceneUpdateFromOptions.ThumbnailSize- renamed fromWebSceneUpdateFromOptionsThumbnailSize?toWebSceneThumbnailSize?Webscene.Presentation- changed fromPresentation?toIPresentation?
- Records changed to Immutable/Readonly Properties:
GeographicTransformationStep,WebMapSaveAsOptions,WebMapSaveOptions,WebMapUpdateFromOptions,WebsceneApplicationProperties,WebsceneInitialViewProperties
New Features
BookmarksViewModelhas two new event handlers:OnBookmarkEditandOnBookmarkSelectElevationInfo- new combined type for all layers with elevation dataFeatureExpressionInfo- property ofElevationInfo
LegendViewModelLayerInfo- two new properties:IReadOnlyList<long>? SublayerIdsandstring? TitleOnExceptionHandlermethod onMapViewandAuthenticationManager- new parameter function to handle runtime exceptions. Returntrueto indicate the exception was handled, orfalseto re-throw.AuthenticationManager.OnExceptionHandler- new parameter to handle JavaScript errors during authentication initialization.OverlayPositionenum - new values for RTL (right-to-left) language support:TopLeading,TopTrailing,BottomLeading,BottomTrailingViewModelChangedmethod onAreaMeasurement2DWidgetandDistanceMeasurement2DWidget- newEventCallbackfor ViewModel property changes
Bug Fixes
- Fixed
SearchWidgetevent results not returning correctly - Fixed
FeatureLayer.ApplyEditsnot throwing exceptions on failure - Fixed registration of ArcGIS-loaded objects like
Sublayer
Full release notes: https://docs.geoblazor.com/pages/coreReleaseNotes.html
What's Changed
- Release v4.2.0 by @TimPurdum in #464
- Release v4.3.0 by @TimPurdum in #483
- Added featurelayer tests by @magmoe in #474
- Add loadProtobuf to Layer.Load by @TimPurdum in #485
activatorutilitesconstructorattribute validation console app by @seahro in #476- measurement widgets and sample by @TimPurdum in #488
- Feature/open basemaps by @TimPurdum in #489
- Samples fixes by @TimPurdum in #490
- .NET 10 Support by @TimPurdum in #491
- Fix SceneView navigation toggle and improve Pro layer fallback handling by @TimPurdum in #498
- Fix SearchWidget events not returning full objects (#499) by @TimPurdum in #500
- Fix MapImageLayer.GetSublayers JS reference population (Issue #492) by @TimPurdum in #494
Full Changelog: v4.3.0...v4.4.0
v4.3.0
OAuth Authentication Guidance Update
- The property
ArcGISPortalUrlfor Enterprise servers should be populated with the portal url, which typically,
but not always, ends with/portal(e.g., https://arcgis.my_company.com/portal). This property is not required for
ArcGIS Online, and if it is set, it would be without/portal(e.g., https://my_company.arcgis.com).
New Features
ExpandWidgetGroup- new property to group multiple ExpandWidgets together. When one is expanded, the others in the same group will collapse.- Added
GetandSetasync methods to the following properties:ExpandedExpandIconClassExpandTooltipGroupCollapseIconClassCollapseTooltip
ImageryTileLayerViewandVectorTileLayerView- new sub-classes ofLayerView.VectorTileLayerView.HasVisibleFeatures
Bug Fixes
- Fixed issues with loading correct
LayerViewclass types. - Fixed issue with
AuthenticationManager.RegisterTokenappending/portalto path even if not needed. Updated documentation and examples as well.
New Sample Application
dymaptic.GeoBlazor.Core.Sample.TokenRefresh- https://github.com/dymaptic/GeoBlazor/tree/develop/samples/dymaptic.GeoBlazor.Core.Sample.TokenRefresh- Demonstrates how to implement App token authentication and token refresh patterns for Blazor Server and WebAssembly.
What's Changed
- Bug/456 authentication manager by @magmoe in #470
- Feature/445 ogc feature layer by @TimPurdum in #471
- Refactor Authentication Token Refresh Examples by @TimPurdum in #473
- remove portal url manipulation and update documentation by @TimPurdum in #482
- Build consolidation by @TimPurdum in #479
New Contributors
Full Changelog: v4.2.0...v4.3.0
v4.2.0
v4.2.0
Breaking Changes
-
MapViewand child components as they are rendered in the DOM now set az-indexof1. This was necessary with the
change to web components described below. It is possible that any custom overlapping UI elements in your application
will need to declare a z-index greater than 1 to be visible above the map.- Elements Impacted
- Class
.esri-ui(fromMapViewcomponent, widgets, and popups) - Class
.custom-overlay(fromCustomOverlaycomponent)
- Class
- Elements Impacted
-
Light/Dark theme is now declared on
MapView, so the<link>tag in theheadof yourApp.razor,index.htmlor_Host.cshtml` file is no longer necessary.-
If you have declared a
<link>tag for the theme, you can remove it. -
If you have not declared a theme, the default is now Light.
<!-- Remove this line from your head tag --> <link href="_content/dymaptic.GeoBlazor.Core/assets/esri/themes/light/main.css" rel="stylesheet" />
-
-
We no longer will be bundling assets beyond JavaScript with GeoBlazor. If you are running GeoBlazor disconnected from
the internet (specifically without access to https://js.arcgis.com), see the instructions about -
Bundled Assets for instructions on how to bundle the assets with your application.
-
BingMapsLayer- marked asObsolete, no longer supported by Microsoft. -
MapView.Rotation- this property is now nullable to prevent overwriting the rotation of published web maps. -
Removed
isSelfIntersectingfromPolygonconstructor. This was always readonly and should not have been in the constructor. -
Removed
ListItemPanelWidget.ListItemproperty, which is a reference to the parentListItemof the widget. This
class should be mostly for internal use and will not break any known usage patterns. -
Type changes
CSVLayer.Capabilities- type simplified fromCSVLayerCapabilities?toCapabilities?.GeoJSONLayer.Capabilities- type simplified fromGeoJSONLayerCapabilities?toCapabilities?.WFSLayer.Capabilities- type simplified fromWFSLayerCapabilities?toCapabilities?.SceneFilter.Geometries- type changed fromIReadOnlyCollection<string>?toIReadOnlyCollection<Polygon>?.SearchResponse.Results- type changed fromIReadOnlyCollection<SearchResponseResults>toIReadOnlyCollection<SearchResults>.SearchResponse.Errors- type changed fromIReadOnlyCollection<SearchResponseErrors>toIReadOnlyCollection<SearchResults>.SuggestResponse.Results- type changed fromIReadOnlyCollection<SuggestResponseResults>toIReadOnlyCollection<SuggestResults>.SuggestResponse.Errors- type changed fromIReadOnlyCollection<SuggestResponseErrors>toIReadOnlyCollection<SuggestResults>.- Consolidated the
DatumTransformationproperties inQueryto a singleDataTransformationproperty of type
QueryDatumTransformationthat can be instantiated with adouble, aQuerySimpleTransformation, or aQueryCompositeTransformation.
Expiring Features
- Microsoft has ended support for the Bing Maps API, which was used in the
BingMapsLayer. As a result, we have marked
theBingMapsLayeras deprecated, and it will be removed in a future release. It is unlikely to be working at the current time.
We are looking at ways to support the newer Azure Maps in the future, but it is not currently supported. Polygon.IsSelfIntersecting- this property is marked asObsoleteand will be removed in a future release. The recommendation is to useGeometry.IsSimple.
🚀 New Features
Bundled Assets Are Removed
- Default asset loading now uses ArcGIS CDN for improved performance and 50% smaller package sizes!
- GeoBlazor Core 4.1.0: 41.5 MB
- GeoBlazor Core 4.2.0: 20.6 MB
- Faster build times. The .NET 9+ Static Asset Compression issues are much less impactful due to reduced package size.
- Fixes issues with stale assets in the browser cache when upgrading GeoBlazor versions.
- For users still needing to bundle assets, see Asset Files for instructions on how to bundle the assets with your application.
Integrated Theme Management
-
Light and dark themes can now be selected directly as a parameter/property on
MapView.<MapView Theme="ArcGISTheme.Light"> <Map> ... </Map> </MapView>
-
Defaults to Light theme without having to declare at all.
-
Simplifies project setup, can now remove link tag from head (see breaking changes above).
MapView WebComponent Integration
- Rebuilt the GeoBlazor
MapViewon top of the ArcGIS Map Component (Web Component). - This should be a transparent change, but the startup logic is significantly different, so please report any issues that you run into, and we will address them immediately.
- Moving to the Map Component prepares us to move our Widgets to the ArcGIS Components as well in the near future, which will address the deprecation warnings.
- The ZoomWidget controls (
+/-) on the map are now optional with the Map Component. We have left them on by default to not be a breaking
change, but to disable them, use<MapView ShowZoomWidget="false">.
ExcludeApiKey Parameter
- This parameter, which was previously available on
WebMap,PortalItem,Basemap, andFeatureLayer, is now
also available on allLayertypes,MapView,SceneView, andAuthenticationManager. For the last three, the effect
is global for that view, but you can then re-add api keys to specific layers if necessary. - The purpose of the
ExcludeApiKeyparameter is for scenarios where a public ArcGIS-hosted layer throws an
invalid tokenerror when provided a token, but is fine with no token. - We have registered this as a bug with Esri as well, and hope that they will fix it in a future version of ArcGIS
so this step will not be necessary.
Smaller Images
- Replaced the GeoBlazor logos and images in docs and samples with webp images for faster loading
Layers
FeatureLayer.GlobalIdField- provides the name of the field that contains the globally unique identifier (gid) for each feature in the layer.ImageryTileLayerandWCSLayer- added readonlySpatialReferenceproperty along withGetSpatialReferencemethod.- Unknown
Layertypes from ArcGIS are now deserialized asUnknownLayerinstead ofnull.
Other Improvements
-
Upgraded to ArcGIS Maps SDK for JavaScript 4.33.10
-
LocationServices.AddressToLocations- added new optional parameteraddressSearchStringParameterName
to allow users to specify the name of the single line address field for locator services published with ArcGIS 10 or later.
By default, we set this property toaddress, which works with the default ArcGIS geocoding Locator Service.
See Esri's notes below:Locators published using ArcGIS 10 or later support a single line address field, which can be specified using the following syntax where field_name is the name of the single line address field. You can find this name by viewing the help or services directory for your locator services. Common values are SingleLine and SingleLineFieldName:
let address = { "field_name": "380 New York St, Redlands, CA 92373" };The Services Directory can be used to find out the required and optional address fields and the correct names for the input name fields. If you are using the World Geocoding Service visit the ArcGIS Online Geocoding Service help for more details on the World Geocoder.
-
Graphic.GlobalId- added new property andGetGlobalIdmethod to fetch the global ID (gid) for the feature. -
Geometry.IsSimple- added a new property to allGeometrytypes that indicates if the given geometry is non-OGC topologically simple. -
MapView.MapRenderTimeoutInMilliseconds- allows developers to customize the amount of time for the map to load before timing out and canceling.
Default value is 60 seconds (60000 milliseconds). This is set very high to allow for large maps to load with lots of data, but can be set lower if desired. -
PortalUser.PortalUserId- added new property.
🐛 Bug Fixes
Widgets
- Fixed inconsistent ordering of widgets stacked in the same corner of the map.
- Fixed "bounce" of view back to original extent after search, bookmark, other widget navigation.
PopupWidget- fixed broken return of large geometries inGetSelectedFeaturemethod.LayerListWidgetandBasemapLayerListWidgetnow populateListItem.Layerin theListItemCreatedHandlermethods.SearchWidget- added clear error message and load pattern for methods ifCoreJsModuleis not loaded.
Layers
- Fixed the loading of
Capabilitiesfor Layers from ArcGIS Services. - Fixed issue with deserializing
Layer.FullExtentfor some layer types. - Added
web-tiletoLayerjson deserialization. - Fixed issue with deserializing
Basemap.BaseLayersandBasemap.ReferenceLayers.
Other Bug Fixes
- Fixed non-specific geocoding results when using
LocationService.AddressToLocationsandLocationService.AddressesToLocations. - Fixed incorrect conversions of Hex colors with alpha values in
MapColor. - Added clearer exception message to calling
AuthenticationManager.IsLoggedInwhen not using OAuth. WebMappublished custom rotation is now honored and not overridden.Sublayersfrom publishedWebMapsare now correctly deserialized and can be used to callSetDefinitionExpressionand other methods.- Fixed `PopupExpre...
v4.1.0
Release Notes
Version 4.1.0
🚀 New Features
ReactiveUtils Nested Collection Events (#432)
- Added support for nested events on collections in ReactiveUtils
- Improved event handling for large data sets in ReactiveUtils
Authentication Manager Enhancements (#424, #437)
- Added logout functionality to AuthenticationManager for User Authentication flows
- Added AuthenticationManager.RegisterToken for App Authentication flows
Layer List Widget Improvements (#440)
- Fixed legend display issues in LayerListWidget
- Added full support and testing for HTML, Widgets, and strings in LayerListWidget panels
🐛 Bug Fixes
Print Widget Methods and Events (#443)
- Fixed print widget methods and events functionality
- Resolved XML build issues
Bookmark Thumbnails (#444)
- Fixed bookmark thumbnail generation and display
- Resolved thumbnail-related issues
Deserialization Issues (#429)
- Fixed component deserialization for mismatched components
- Improved property copying during deserialization
Dynamic Layer Constructors (#426)
- Fixed missing constructor tags for DynamicDataLayer and DynamicMapLayer in .NET 9
- Resolved .NET 9 compatibility issues
📚 Documentation & Testing
Enhanced Testing Infrastructure
- Added comprehensive test coverage for LayerListWidget
- Implemented ReactiveUtils testing components
- Enhanced test runner functionality
- Added WebApp test infrastructure
Update Samples and Tests (#435, #437)
- Consolidated OAuth samples into unified structure
- Removed redundant sample projects
- Updated project references and dependencies
- Improved sample code organization
- Converted PNG and JPG files to WebP format for better performance
- Optimized image assets throughout the project
- Fixed double-click navigation errors
🏗️ Technical Improvements
Build System Enhancements
- Added Claude Code integration for development workflow
- Improved esbuild configuration and automation
- Enhanced CI/CD pipeline with better commit handling
- Updated package dependencies and versions
Performance Optimizations
- Optimized image loading and storage
- Improved build performance and asset management
- Enhanced memory usage and resource handling
What's Changed
- Release v4.0.1 by @TimPurdum in #420
- Fix missing constructor tags for DynamicDataLayer, DynamicMapLayer for .NET 9 by @TimPurdum in #426
- Adds claude code to repo by @codergrl in #434
- Fix for mismatched components on deserialization copying properties by @TimPurdum in #429
- Fix light mode sample css for older samples by @TimPurdum in #430
- Add AuthenticationManager.RegisterToken, Update ReadMes by @TimPurdum in #424
- Update ReactiveUtils to Support Nested Events and Streaming large data by @TimPurdum in #432
- Feature/315 custom popup content by @TimPurdum in #423
- Feature/433 refactor samples and tests by @TimPurdum in #437
- Support for Multipoint, GeoJSON Styles in Pro by @TimPurdum in #438
- fix for legend in layerlist widget by @TimPurdum in #440
- Fix for Bookmark Thumbnails by @TimPurdum in #444
- Convert images to webp by @codergrl in #435
- Fixes for 3 samples by @TimPurdum in #447
- Bug/442 print widget methods and events by @TimPurdum in #443
Full Changelog: v4.0.1...v4.1.0
v4.0.1
Release Notes
Library Bug Fixes
- #418 Fixed issue breaking popups containing field content.
- #416 Added initial attempt to fix PortalItems with custom ApiKeys.
Release Process
- Removed main pipeline version bump that broke main build pipeline
Samples/Testing Updates and Fixes
- Moved Samples and Tests to .NET 9
- Added more support for .NET 9
MapStaticAssetsand tested - Removed broken links to source pages. Source pages will still be available in the repository here and on the published samples at https://samples.dymaptic.com.
- Fixed Samples navigation bugs that would cause console log errors in the browser dev tools and occasional SignalR disconnects.
What's Changed
- Release v3.2.1 by @TimPurdum in #376
- Release v4.0.0 by @TimPurdum in #414
- release cleanup by @TimPurdum in #415
- Bug/417 samples by @TimPurdum in #419
Full Changelog: v4.0.0...v4.0.1
v4.0.0
Release Notes
New Features
- Circle
- WFSLayer
- WMSLayer
- MWTSLayer
- DistanceMeasurement2DWidget
Bug Fixes
- Fix for LocateWidget resetting MapView extent when bound to latitude/longitude
- Support added for custom FontsUrl to enable MeasurementWidget in disconnected environments
- Fixed breaking change in .NET 9 that caused constructor conflict errors in GeoBlazor components
- Fixed inconsistent application of the Visible property on widgets during creation via arcGisJsInterop.createWidget
- Fixed crash when selecting bookmarks in the BookmarkWidget that caused the map to disappear
- Removed unnecessary package.json and tsconfig.json files from NuGet packages to prevent conflicts during installation
- Fix for TextSymbol font size updates by correcting protobuf font property name
- Resolved race condition by ensuring MapRendered waits for RenderView completion
- Fixed NullReferenceException issue related to nested sublayers in TileLayer
Full list of changes will be published at https://docs.geoblazor.com/pages/coreReleaseNotes.html
What's Changed
- Updating JS Point and Bookmark creation by @AndersenBell in #378
- Feature/update jsbuilder by @AndersenBell in #379
- Change Content to None to exclude files. by @TimPurdum in #381
- Bump esbuild from 0.23.0 to 0.25.0 in /src/dymaptic.GeoBlazor.Core by @dependabot in #382
- Feature/374 public api by @TimPurdum in #386
- 364 code gen 2 by @TimPurdum in #384
- V4 documentation by @TimPurdum in #387
- removed generated files without root by @seahro in #389
- Feature/327 map refresh by @TimPurdum in #388
- Update registration validator to require free registration key. by @TimPurdum in #391
- Bug/362 bookmarks widgets v4 by @TimPurdum in #393
- Add script to increment build when pushing to GitHub and Nuget. by @TimPurdum in #394
- Resolve OpenStreetMapLayer urlTemplate Error with WebTileLayer by @Pouria7 in #390
- Feature/arcgis 4 32 by @TimPurdum in #396
- Bug/397 font size by @TimPurdum in #398
- update sublayer to copy nested sublayers by @TimPurdum in #400
- update project files and readme by @TimPurdum in #403
- Feature/404 samples theme by @TimPurdum in #405
- Bug/401 portal property deserialization by @TimPurdum in #406
- Update actions by @TimPurdum in #408
- Update readme by @codergrl in #407
- Pro/print widget by @TimPurdum in #409
- Feature/410 experimental layers by @TimPurdum in #411
- WMS Layer by @TimPurdum in #412
- WMTS Layer by @TimPurdum in #413
New Contributors
Full Changelog: v3.2.1...v4.0.0
v3.2.1
Release Notes
Bug Fix
- Fixes
AttributesDictionaryvalue deserialization when querying, using hit tests, or sketch widget
What's Changed
- Release v3.2.0 Merge by @TimPurdum in #375
Full Changelog: v3.2.0...v3.2.1
v3.2.0
Release Notes
Notice
This version of GeoBlazor is dropping support for .NET 6 and .NET 7, which are now out of support for Microsoft. Since the library is open-source, you can generate your own builds targeting these earlier platforms if necessary, or consider purchasing a GeoBlazor Pro license for custom support.
Bug Fixes
- Number formatting in AttributesDictionary fixed for different languages/cultures
- Fix for reading/writing TimeExtent objects
- Fix for updating the visibility of some widgets with SetVisible
- Fix for setting SpatialReference with Wkt property
New Features
- .NET 9 Compatibility
- 2D Area Measurement Widget
- MapView.TakeScreenshot - Takes a snapshot of the current map view and returns a Base64-encoded data url
- AuthenticationManager.FontsUrl - Support for fonts in disconnected environments
- SpatialReference.Wkt2 - New well-known type format