Version 4.17.0: Added support for WMTS

This commit is contained in:
ClemensF 2020-03-23 17:13:50 +01:00
parent b5fe760c83
commit 31a58c3510
4 changed files with 51 additions and 45 deletions

View file

@ -63,10 +63,10 @@ namespace MapControl
{
}
public IReadOnlyCollection<Tile> Tiles { get; private set; } = new List<Tile>();
public TileGrid TileGrid { get; private set; }
public IReadOnlyCollection<Tile> Tiles { get; private set; } = new List<Tile>();
/// <summary>
/// Minimum zoom level supported by the MapTileLayer. Default value is 0.
/// </summary>
@ -85,37 +85,6 @@ namespace MapControl
set { SetValue(MaxZoomLevelProperty, value); }
}
protected override Size MeasureOverride(Size availableSize)
{
availableSize = new Size(double.PositiveInfinity, double.PositiveInfinity);
foreach (var tile in Tiles)
{
tile.Image.Measure(availableSize);
}
return new Size();
}
protected override Size ArrangeOverride(Size finalSize)
{
if (TileGrid != null)
{
foreach (var tile in Tiles)
{
var tileSize = TileSize << (TileGrid.ZoomLevel - tile.ZoomLevel);
var x = tileSize * tile.X - TileSize * TileGrid.XMin;
var y = tileSize * tile.Y - TileSize * TileGrid.YMin;
tile.Image.Width = tileSize;
tile.Image.Height = tileSize;
tile.Image.Arrange(new Rect(x, y, tileSize, tileSize));
}
}
return finalSize;
}
protected override void TileSourcePropertyChanged()
{
if (TileGrid != null)
@ -242,5 +211,36 @@ namespace MapControl
TileImageLoader.LoadTilesAsync(Tiles, TileSource, SourceName);
}
protected override Size MeasureOverride(Size availableSize)
{
availableSize = new Size(double.PositiveInfinity, double.PositiveInfinity);
foreach (var tile in Tiles)
{
tile.Image.Measure(availableSize);
}
return new Size();
}
protected override Size ArrangeOverride(Size finalSize)
{
if (TileGrid != null)
{
foreach (var tile in Tiles)
{
var tileSize = TileSize << (TileGrid.ZoomLevel - tile.ZoomLevel);
var x = tileSize * tile.X - TileSize * TileGrid.XMin;
var y = tileSize * tile.Y - TileSize * TileGrid.YMin;
tile.Image.Width = tileSize;
tile.Image.Height = tileSize;
tile.Image.Arrange(new Rect(x, y, tileSize, tileSize));
}
}
return finalSize;
}
}
}