Skip to content

Releases: dymaptic/GeoBlazor

v4.4.2

09 Jan 19:48

Choose a tag to compare

No changes, patch release to fix build error for Pro NuGetPackage

What's Changed

Full Changelog: v4.3.0...v4.4.2

v4.4.1

09 Jan 17:40

Choose a tag to compare

No changes, patch release to fix build error for Pro NuGetPackage

What's Changed

Full Changelog: v4.3.0...v4.4.1

v4.4.0

23 Dec 16:01

Choose a tag to compare

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

  • GeoLocationOptions moved from dymaptic.GeoBlazor.Core.Components to dymaptic.GeoBlazor.Core.Options
  • InitialViewProperties, WebsceneApplicationProperties, and WebsceneInitialViewProperties moved from dymaptic.GeoBlazor.Core.Components to dymaptic.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 classes
  • Lighting - multiple related classes
  • SpriteSource - multiple related classes
  • Slide - multiple related classes
  • Numerous internal-use interfaces
  • DateTimePickerInput, Environment, Presentation, ServiceEdits, Shading

Removed Members (Properties/Methods)

  • SetObjectIdField on FeatureLayer, CSVLayer, WFSLayer: cannot be set on layers after they are loaded.
  • SetGeometryType on CSVLayer, WFSLayer: cannot be set on layers after they are loaded.
  • SetHighlightOptions and GetHighlightOptions on CSVLayerView, FeatureLayerView, GraphicsLayerView, ImageryLayerView, and WFSLayerView: HighlightOptions is being deprecated in favor of MapView.Highlights.
  • SetView and GetView on ExpandViewModel: cannot be set after initial load.

Changed Signatures

  • LocationService.AddressesToLocations: multiple signatures were re-organized; should still have all overload options available
  • MapView.OnJavascriptError: return type changed from void to Task
  • Type of ElevationInfo property on CSVLayer, FeatureLayer, GraphicsLayer, and WFSLayer consolidated to type of ElevationInfo rather than individual types
  • Incorrect type fixes: (object types do not deserialize correctly)
    • DynamicMapLayer.MapLayerId - changed from int to long? to support longer IDs and null
    • TemporalDomain.Units and ValidateServiceEdits.EditedFeatures - changed from object? to string?
    • WMSLayer.Dimensions and WMSSublayer.Dimensions - changed from IReadOnlyList<object>? to IReadOnlyList<IWMSLayerDimension>?
  • Renamed/Changed types:
    • LegendViewModel.LayerInfos - renamed from IReadOnlyList<LegendViewModelLayerInfos>? to IReadOnlyList<LegendViewModelLayerInfo>?
    • ImageryTileLayer.Interpolation - renamed from Interpolation? to PixelInterpolation?
    • WebSceneUpdateFromOptions.ThumbnailSize - renamed from WebSceneUpdateFromOptionsThumbnailSize? to WebSceneThumbnailSize?
    • Webscene.Presentation - changed from Presentation? to IPresentation?
  • Records changed to Immutable/Readonly Properties: GeographicTransformationStep, WebMapSaveAsOptions, WebMapSaveOptions, WebMapUpdateFromOptions, WebsceneApplicationProperties, WebsceneInitialViewProperties

New Features

  • BookmarksViewModel has two new event handlers: OnBookmarkEdit and OnBookmarkSelect
  • ElevationInfo - new combined type for all layers with elevation data
    • FeatureExpressionInfo - property of ElevationInfo
  • LegendViewModelLayerInfo - two new properties: IReadOnlyList<long>? SublayerIds and string? Title
  • OnExceptionHandler method on MapView and AuthenticationManager - new parameter function to handle runtime exceptions. Return true to indicate the exception was handled, or false to re-throw.
  • AuthenticationManager.OnExceptionHandler - new parameter to handle JavaScript errors during authentication initialization.
  • OverlayPosition enum - new values for RTL (right-to-left) language support: TopLeading, TopTrailing, BottomLeading, BottomTrailing
  • ViewModelChanged method on AreaMeasurement2DWidget and DistanceMeasurement2DWidget - new EventCallback for ViewModel property changes

Bug Fixes

  • Fixed SearchWidget event results not returning correctly
  • Fixed FeatureLayer.ApplyEdits not 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

Full Changelog: v4.3.0...v4.4.0

v4.3.0

07 Oct 13:44

Choose a tag to compare

OAuth Authentication Guidance Update

  • The property ArcGISPortalUrl for 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

  • ExpandWidget
    • Group - new property to group multiple ExpandWidgets together. When one is expanded, the others in the same group will collapse.
    • Added Get and Set async methods to the following properties:
      • Expanded
      • ExpandIconClass
      • ExpandTooltip
      • Group
      • CollapseIconClass
      • CollapseTooltip
  • ImageryTileLayerView and VectorTileLayerView - new sub-classes of LayerView.
    • VectorTileLayerView.HasVisibleFeatures

Bug Fixes

  • Fixed issues with loading correct LayerView class types.
  • Fixed issue with AuthenticationManager.RegisterToken appending /portal to path even if not needed. Updated documentation and examples as well.

New Sample Application

What's Changed

New Contributors

Full Changelog: v4.2.0...v4.3.0

v4.2.0

21 Aug 13:29

Choose a tag to compare

v4.2.0

Breaking Changes

  • MapView and child components as they are rendered in the DOM now set a z-index of 1. 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 (from MapView component, widgets, and popups)
      • Class .custom-overlay (from CustomOverlay component)
  • Light/Dark theme is now declared on MapView, so the <link> tag in the head of your App.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 as Obsolete, no longer supported by Microsoft.

  • MapView.Rotation - this property is now nullable to prevent overwriting the rotation of published web maps.

  • Removed isSelfIntersecting from Polygon constructor. This was always readonly and should not have been in the constructor.

  • Removed ListItemPanelWidget.ListItem property, which is a reference to the parent ListItem of the widget. This
    class should be mostly for internal use and will not break any known usage patterns.

  • Type changes

    • CSVLayer.Capabilities - type simplified from CSVLayerCapabilities? to Capabilities?.
    • GeoJSONLayer.Capabilities - type simplified from GeoJSONLayerCapabilities? to Capabilities?.
    • WFSLayer.Capabilities - type simplified from WFSLayerCapabilities? to Capabilities?.
    • SceneFilter.Geometries - type changed from IReadOnlyCollection<string>? to IReadOnlyCollection<Polygon>?.
    • SearchResponse.Results - type changed from IReadOnlyCollection<SearchResponseResults> to IReadOnlyCollection<SearchResults>.
    • SearchResponse.Errors - type changed from IReadOnlyCollection<SearchResponseErrors> to IReadOnlyCollection<SearchResults>.
    • SuggestResponse.Results - type changed from IReadOnlyCollection<SuggestResponseResults> to IReadOnlyCollection<SuggestResults>.
    • SuggestResponse.Errors - type changed from IReadOnlyCollection<SuggestResponseErrors> to IReadOnlyCollection<SuggestResults>.
    • Consolidated the DatumTransformation properties in Query to a single DataTransformation property of type
      QueryDatumTransformation that can be instantiated with a double, a QuerySimpleTransformation, or a QueryCompositeTransformation.

Expiring Features

  • Microsoft has ended support for the Bing Maps API, which was used in the BingMapsLayer. As a result, we have marked
    the BingMapsLayer as 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 as Obsolete and will be removed in a future release. The recommendation is to use Geometry.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 MapView on 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, and FeatureLayer, is now
    also available on all Layer types, MapView, SceneView, and AuthenticationManager. 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 ExcludeApiKey parameter is for scenarios where a public ArcGIS-hosted layer throws an
    invalid token error 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.
  • ImageryTileLayer and WCSLayer - added readonly SpatialReference property along with GetSpatialReference method.
  • Unknown Layer types from ArcGIS are now deserialized as UnknownLayer instead of null.

Other Improvements

  • Upgraded to ArcGIS Maps SDK for JavaScript 4.33.10

  • LocationServices.AddressToLocations - added new optional parameter addressSearchStringParameterName
    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 to address, 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 and GetGlobalId method to fetch the global ID (gid) for the feature.

  • Geometry.IsSimple - added a new property to all Geometry types 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 in GetSelectedFeature method.
  • LayerListWidget and BasemapLayerListWidget now populate ListItem.Layer in the ListItemCreatedHandler methods.
  • SearchWidget - added clear error message and load pattern for methods if CoreJsModule is not loaded.

Layers

  • Fixed the loading of Capabilities for Layers from ArcGIS Services.
  • Fixed issue with deserializing Layer.FullExtent for some layer types.
  • Added web-tile to Layer json deserialization.
  • Fixed issue with deserializing Basemap.BaseLayers and Basemap.ReferenceLayers.

Other Bug Fixes

  • Fixed non-specific geocoding results when using LocationService.AddressToLocations and LocationService.AddressesToLocations.
  • Fixed incorrect conversions of Hex colors with alpha values in MapColor.
  • Added clearer exception message to calling AuthenticationManager.IsLoggedIn when not using OAuth.
  • WebMap published custom rotation is now honored and not overridden.
  • Sublayers from published WebMaps are now correctly deserialized and can be used to call SetDefinitionExpression and other methods.
  • Fixed `PopupExpre...
Read more

v4.1.0

09 Jul 18:42
2143e4b

Choose a tag to compare

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

Full Changelog: v4.0.1...v4.1.0

v4.0.1

03 Jun 22:54
bc7748f

Choose a tag to compare

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 MapStaticAssets and 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

Full Changelog: v4.0.0...v4.0.1

v4.0.0

29 May 23:21
fc0d880

Choose a tag to compare

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

New Contributors

Full Changelog: v3.2.1...v4.0.0

v3.2.1

01 Feb 21:33

Choose a tag to compare

Release Notes

Bug Fix

  • Fixes AttributesDictionary value deserialization when querying, using hit tests, or sketch widget

What's Changed

Full Changelog: v3.2.0...v3.2.1

v3.2.0

27 Jan 13:59
e14508c

Choose a tag to compare

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