From 681da9b6258b8e75b5ebe2735632ae11a600c9d1 Mon Sep 17 00:00:00 2001 From: Clemens Date: Wed, 10 Nov 2021 22:31:39 +0100 Subject: [PATCH] Add LoadBackgroundTiles property --- MapControl/Shared/MapTileLayer.cs | 11 ++++------- MapControl/Shared/MapTileLayerBase.cs | 6 +++++- MapControl/Shared/WmtsTileLayer.cs | 2 +- 3 files changed, 10 insertions(+), 9 deletions(-) diff --git a/MapControl/Shared/MapTileLayer.cs b/MapControl/Shared/MapTileLayer.cs index fd8bff44..4b77e5ad 100644 --- a/MapControl/Shared/MapTileLayer.cs +++ b/MapControl/Shared/MapTileLayer.cs @@ -211,15 +211,12 @@ namespace MapControl } else { - var newTiles = new List(); - var minZoomLevel = maxZoomLevel; - - if (this == ParentMap.MapLayer) // load background tiles - { - minZoomLevel = Math.Max(TileMatrix.ZoomLevel - MaxBackgroundLevels, MinZoomLevel); - } + var minZoomLevel = LoadBackgroundTiles + ? Math.Max(TileMatrix.ZoomLevel - MaxBackgroundLevels, MinZoomLevel) + : maxZoomLevel; var oldTiles = Tiles.Where(t => t.ZoomLevel >= minZoomLevel && t.ZoomLevel <= maxZoomLevel).ToList(); + var newTiles = new List(); Tiles.Clear(); diff --git a/MapControl/Shared/MapTileLayerBase.cs b/MapControl/Shared/MapTileLayerBase.cs index 51d2ab97..cf3f96a1 100644 --- a/MapControl/Shared/MapTileLayerBase.cs +++ b/MapControl/Shared/MapTileLayerBase.cs @@ -69,7 +69,6 @@ namespace MapControl { RenderTransform = new MatrixTransform(); TileImageLoader = tileImageLoader; - #if WINUI updateTimer = DispatcherQueue.CreateTimer(); #endif @@ -177,6 +176,11 @@ namespace MapControl } } + protected bool LoadBackgroundTiles + { + get { return this == parentMap?.MapLayer; } + } + private async void OnViewportChanged(object sender, ViewportChangedEventArgs e) { if (Children.Count == 0 || e.ProjectionChanged || Math.Abs(e.LongitudeOffset) > 180d) diff --git a/MapControl/Shared/WmtsTileLayer.cs b/MapControl/Shared/WmtsTileLayer.cs index 1160dc2e..b5718fad 100644 --- a/MapControl/Shared/WmtsTileLayer.cs +++ b/MapControl/Shared/WmtsTileLayer.cs @@ -126,7 +126,7 @@ namespace MapControl .Where((matrix, i) => i == 0 || matrix.Scale <= maxScale) .ToList(); - if (this != ParentMap.MapLayer) // do not load background tiles + if (!LoadBackgroundTiles) { currentMatrixes = currentMatrixes.Skip(currentMatrixes.Count - 1).ToList(); // last element only }