Index: Core/Components/src/Core.Components.DotSpatial.Forms/Core.Components.DotSpatial.Forms.csproj
===================================================================
diff -u -r13a7121f09c123fe08031a03d3aa598d9800b372 -reada3ba8d4d1b06b3039918f8d0ad9f9789ab374
--- Core/Components/src/Core.Components.DotSpatial.Forms/Core.Components.DotSpatial.Forms.csproj (.../Core.Components.DotSpatial.Forms.csproj) (revision 13a7121f09c123fe08031a03d3aa598d9800b372)
+++ Core/Components/src/Core.Components.DotSpatial.Forms/Core.Components.DotSpatial.Forms.csproj (.../Core.Components.DotSpatial.Forms.csproj) (revision eada3ba8d4d1b06b3039918f8d0ad9f9789ab374)
@@ -34,6 +34,7 @@
AllRules.ruleset
+
False
..\..\..\..\lib\DotSpatial.1.8\DotSpatial.Controls.dll
@@ -66,7 +67,6 @@
-
Index: Core/Components/src/Core.Components.DotSpatial.Forms/MapControl.cs
===================================================================
diff -u -rb519fc798c63691f04bb8008b562a94ed9232d51 -reada3ba8d4d1b06b3039918f8d0ad9f9789ab374
--- Core/Components/src/Core.Components.DotSpatial.Forms/MapControl.cs (.../MapControl.cs) (revision b519fc798c63691f04bb8008b562a94ed9232d51)
+++ Core/Components/src/Core.Components.DotSpatial.Forms/MapControl.cs (.../MapControl.cs) (revision eada3ba8d4d1b06b3039918f8d0ad9f9789ab374)
@@ -50,15 +50,15 @@
private readonly RecursiveObserver mapDataCollectionObserver;
private readonly Observer backGroundMapDataObserver;
private readonly IList drawnMapDataList = new List();
- private readonly WmtsBackgroundLayerStatus backgroundLayerStatus = new WmtsBackgroundLayerStatus();
private Map map;
private MapFunctionPan mapFunctionPan;
private MapFunctionSelectionZoom mapFunctionSelectionZoom;
private RdNewMouseCoordinatesMapExtension mouseCoordinatesMapExtension;
private MapDataCollection data;
- private WmtsMapData backgroundMapData;
+ private IBackgroundLayerStatus backgroundLayerStatus;
+ private ImageBasedMapData backgroundMapData;
///
/// Creates a new instance of .
@@ -102,7 +102,7 @@
}
}
- public WmtsMapData BackgroundMapData
+ public ImageBasedMapData BackgroundMapData
{
get
{
@@ -117,6 +117,7 @@
backgroundMapData = value;
backGroundMapDataObserver.Observable = backgroundMapData;
+ backgroundLayerStatus = BackgroundLayerStatusFactory.CreateBackgroundLayerStatus(backgroundMapData);
if (HasMapData)
{
@@ -195,7 +196,7 @@
{
if (backgroundLayerStatus.BackgroundLayer != null)
{
- if (HasBackgroundMapDataConfigurationChanged())
+ if (HasBackgroundMapDataConfigurationChanged(backgroundMapData))
{
map.Layers.Remove(backgroundLayerStatus.BackgroundLayer);
backgroundLayerStatus.ClearConfiguration();
@@ -214,18 +215,19 @@
}
}
- private bool HasBackgroundMapDataConfigurationChanged()
+ private bool HasBackgroundMapDataConfigurationChanged(ImageBasedMapData wmtsMapDataBackgroundMapData)
{
- return !backgroundLayerStatus.HasSameConfiguration(backgroundMapData);
+ return !backgroundLayerStatus.HasSameConfiguration(wmtsMapDataBackgroundMapData);
}
private void InsertBackgroundLayer()
{
if (backgroundMapData.IsConfigured)
{
- InitializeBackgroundLayer();
-
- InsertBackgroundLayerAndReprojectExistingLayers();
+ if (InitializeBackgroundLayer())
+ {
+ InsertBackgroundLayerAndReprojectExistingLayers();
+ }
}
else
{
@@ -234,25 +236,40 @@
}
}
+ private bool InitializeBackgroundLayer()
+ {
+ var wmtsBackgroundMapData = backgroundMapData as WmtsMapData;
+ var wellKnownMapDataBackgroundMapData = backgroundMapData as WellKnownTileSourceMapData;
+ if (wmtsBackgroundMapData != null)
+ {
+ return InitializeBackgroundLayer(wmtsBackgroundMapData);
+ }
+ if (wellKnownMapDataBackgroundMapData != null)
+ {
+ return InitializeBackgroundLayer(wellKnownMapDataBackgroundMapData);
+ }
+ return false;
+ }
+
///
/// Attempts to initialize the background layer.
///
/// true if initialization of the background layer was successful,
/// false otherwise.
///
- private bool InitializeBackgroundLayer()
+ private bool InitializeBackgroundLayer(WmtsMapData wmtsMapDataBackgroundMapData)
{
try
{
- WmtsLayerConfiguration configuration = WmtsLayerConfiguration.CreateInitializedConfiguration(backgroundMapData.SourceCapabilitiesUrl,
- backgroundMapData.SelectedCapabilityIdentifier,
- backgroundMapData.PreferredFormat);
+ WmtsLayerConfiguration configuration = WmtsLayerConfiguration.CreateInitializedConfiguration(wmtsMapDataBackgroundMapData.SourceCapabilitiesUrl,
+ wmtsMapDataBackgroundMapData.SelectedCapabilityIdentifier,
+ wmtsMapDataBackgroundMapData.PreferredFormat);
var backgroundLayer = new BruTileLayer(configuration)
{
IsVisible = backgroundMapData.IsVisible,
Transparency = Convert.ToSingle(backgroundMapData.Transparency)
};
- backgroundLayerStatus.SuccessfullyInitializedLayer(backgroundLayer, backgroundMapData);
+ backgroundLayerStatus.SuccessfullyInitializedLayer(backgroundLayer, wmtsMapDataBackgroundMapData);
return true;
}
catch (Exception e) when (e is CannotFindTileSourceException || e is CannotReceiveTilesException)
@@ -269,6 +286,36 @@
}
}
+ private bool InitializeBackgroundLayer(WellKnownTileSourceMapData wellKnownMapDataBackgroundMapData)
+ {
+ try
+ {
+ WellKnownTileSourceLayerConfiguration configuration = WellKnownTileSourceLayerConfiguration.CreateInitializedConfiguration(
+ wellKnownMapDataBackgroundMapData.TileSource);
+
+ var backgroundLayer = new BruTileLayer(configuration)
+ {
+ IsVisible = backgroundMapData.IsVisible,
+ Transparency = Convert.ToSingle(backgroundMapData.Transparency)
+ };
+ backgroundLayerStatus.SuccessfullyInitializedLayer(backgroundLayer, wellKnownMapDataBackgroundMapData);
+
+ return true;
+ }
+ catch (Exception e) when (e is CannotFindTileSourceException || e is CannotReceiveTilesException)
+ {
+ HandleBruTileInitializationException(e, $"Verbinden met '{nameof(wellKnownMapDataBackgroundMapData.TileSource)}' is mislukt waardoor geen kaartgegevens ingeladen kunnen worden.");
+
+ return false;
+ }
+ catch (CannotCreateTileCacheException e)
+ {
+ HandleBruTileInitializationException(e, Resources.MapControl_InitializeBackgroundLayer_Persistent_cache_creation_failed);
+
+ return false;
+ }
+ }
+
private void HandleBruTileInitializationException(Exception e, string message)
{
if (!backgroundLayerStatus.PreviousBackgroundLayerCreationFailed)
@@ -283,15 +330,12 @@
private void InsertBackgroundLayerAndReprojectExistingLayers()
{
- if (backgroundLayerStatus.BackgroundLayer != null)
- {
- IMapLayer[] existingMapLayers = map.Layers.ToArray();
+ IMapLayer[] existingMapLayers = map.Layers.ToArray();
- map.Projection = backgroundLayerStatus.BackgroundLayer.Projection;
- map.Layers.Insert(0, backgroundLayerStatus.BackgroundLayer);
+ map.Projection = backgroundLayerStatus.BackgroundLayer.Projection;
+ map.Layers.Insert(0, backgroundLayerStatus.BackgroundLayer);
- ReprojectLayers(existingMapLayers);
- }
+ ReprojectLayers(existingMapLayers);
}
private void ReprojectLayers(IEnumerable layersToReproject)
@@ -435,7 +479,7 @@
map.ClearLayers();
map.Projection = MapDataConstants.FeatureBasedMapDataCoordinateSystem;
- backgroundLayerStatus.ClearConfiguration(expectedRecreationOfBackgroundLayer);
+ backgroundLayerStatus?.ClearConfiguration(expectedRecreationOfBackgroundLayer);
}
private void HandleMapDataCollectionChange()
Index: Core/Components/src/Core.Components.Gis.Forms/IMapControl.cs
===================================================================
diff -u -rb519fc798c63691f04bb8008b562a94ed9232d51 -reada3ba8d4d1b06b3039918f8d0ad9f9789ab374
--- Core/Components/src/Core.Components.Gis.Forms/IMapControl.cs (.../IMapControl.cs) (revision b519fc798c63691f04bb8008b562a94ed9232d51)
+++ Core/Components/src/Core.Components.Gis.Forms/IMapControl.cs (.../IMapControl.cs) (revision eada3ba8d4d1b06b3039918f8d0ad9f9789ab374)
@@ -52,7 +52,7 @@
///
/// Gets or sets the data to show in the background of the .
///
- WmtsMapData BackgroundMapData { get; set; }
+ ImageBasedMapData BackgroundMapData { get; set; }
///
/// Zooms to a level so that all visible layers are in view.