MapTilePyramidLayer

This commit is contained in:
ClemensFischer 2025-09-21 10:57:11 +02:00
parent 64857e297a
commit 7e9d60328d
3 changed files with 15 additions and 15 deletions

View file

@ -20,9 +20,9 @@ using Avalonia.Media;
namespace MapControl
{
/// <summary>
/// Displays a standard Web Mercator map tile grid, e.g. an OpenStreetMap tile grid.
/// Displays a standard Web Mercator map tile pyramid, e.g. a OpenStreetMap tiles.
/// </summary>
public partial class MapTileLayer : MapTileLayerBase
public partial class MapTileLayer : MapTilePyramidLayer
{
public static readonly DependencyProperty MinZoomLevelProperty =
DependencyPropertyHelper.Register<MapTileLayer, int>(nameof(MinZoomLevel), 0);

View file

@ -26,43 +26,43 @@ using Avalonia.Threading;
namespace MapControl
{
public abstract class MapTileLayerBase : Panel, IMapLayer
public abstract class MapTilePyramidLayer : Panel, IMapLayer
{
public static readonly DependencyProperty TileSourceProperty =
DependencyPropertyHelper.Register<MapTileLayerBase, TileSource>(nameof(TileSource), null,
DependencyPropertyHelper.Register<MapTilePyramidLayer, TileSource>(nameof(TileSource), null,
(layer, oldValue, newValue) => layer.UpdateTileLayer(true));
public static readonly DependencyProperty SourceNameProperty =
DependencyPropertyHelper.Register<MapTileLayerBase, string>(nameof(SourceName));
DependencyPropertyHelper.Register<MapTilePyramidLayer, string>(nameof(SourceName));
public static readonly DependencyProperty DescriptionProperty =
DependencyPropertyHelper.Register<MapTileLayerBase, string>(nameof(Description));
DependencyPropertyHelper.Register<MapTilePyramidLayer, string>(nameof(Description));
public static readonly DependencyProperty MaxBackgroundLevelsProperty =
DependencyPropertyHelper.Register<MapTileLayerBase, int>(nameof(MaxBackgroundLevels), 5);
DependencyPropertyHelper.Register<MapTilePyramidLayer, int>(nameof(MaxBackgroundLevels), 5);
public static readonly DependencyProperty UpdateIntervalProperty =
DependencyPropertyHelper.Register<MapTileLayerBase, TimeSpan>(nameof(UpdateInterval), TimeSpan.FromSeconds(0.2),
DependencyPropertyHelper.Register<MapTilePyramidLayer, TimeSpan>(nameof(UpdateInterval), TimeSpan.FromSeconds(0.2),
(layer, oldValue, newValue) => layer.updateTimer.Interval = newValue);
public static readonly DependencyProperty UpdateWhileViewportChangingProperty =
DependencyPropertyHelper.Register<MapTileLayerBase, bool>(nameof(UpdateWhileViewportChanging));
DependencyPropertyHelper.Register<MapTilePyramidLayer, bool>(nameof(UpdateWhileViewportChanging));
public static readonly DependencyProperty MapBackgroundProperty =
DependencyPropertyHelper.Register<MapTileLayerBase, Brush>(nameof(MapBackground));
DependencyPropertyHelper.Register<MapTilePyramidLayer, Brush>(nameof(MapBackground));
public static readonly DependencyProperty MapForegroundProperty =
DependencyPropertyHelper.Register<MapTileLayerBase, Brush>(nameof(MapForeground));
DependencyPropertyHelper.Register<MapTilePyramidLayer, Brush>(nameof(MapForeground));
public static readonly DependencyProperty LoadingProgressProperty =
DependencyPropertyHelper.Register<MapTileLayerBase, double>(nameof(LoadingProgress), 1d);
DependencyPropertyHelper.Register<MapTilePyramidLayer, double>(nameof(LoadingProgress), 1d);
private readonly Progress<double> loadingProgress;
private readonly DispatcherTimer updateTimer;
private ITileImageLoader tileImageLoader;
private MapBase parentMap;
protected MapTileLayerBase()
protected MapTilePyramidLayer()
{
IsHitTestVisible = false;

View file

@ -20,7 +20,7 @@ namespace MapControl
/// <summary>
/// Displays map tiles from a Web Map Tile Service (WMTS).
/// </summary>
public partial class WmtsTileLayer : MapTileLayerBase
public partial class WmtsTileLayer : MapTilePyramidLayer
{
private static ILogger logger;
private static ILogger Logger => logger ??= ImageLoader.LoggerFactory?.CreateLogger(typeof(WmtsTileLayer));
@ -174,7 +174,7 @@ namespace MapControl
foreach (var tileMatrix in currentMatrixes)
{
var layer = currentLayers.FirstOrDefault(l => l.WmtsTileMatrix == tileMatrix) ??
new WmtsTileMatrixLayer(tileMatrix, tileMatrixSet.TileMatrixes.IndexOf(tileMatrix));
new WmtsTileMatrixLayer(tileMatrix, tileMatrixSet.TileMatrixes.IndexOf(tileMatrix));
if (layer.UpdateTiles(ParentMap.ViewTransform, ParentMap.ActualWidth, ParentMap.ActualHeight))
{