mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Minor cleanup in TileImageLoader
This commit is contained in:
parent
fa5368e77a
commit
ee4f049334
|
|
@ -208,7 +208,7 @@ namespace MapControl
|
||||||
Children.Add(tile.Image);
|
Children.Add(tile.Image);
|
||||||
}
|
}
|
||||||
|
|
||||||
TileImageLoader.LoadTilesAsync(Tiles, TileSource, SourceName);
|
TileImageLoader.LoadTiles(Tiles, TileSource, SourceName);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override Size MeasureOverride(Size availableSize)
|
protected override Size MeasureOverride(Size availableSize)
|
||||||
|
|
|
||||||
|
|
@ -19,7 +19,7 @@ namespace MapControl
|
||||||
{
|
{
|
||||||
public interface ITileImageLoader
|
public interface ITileImageLoader
|
||||||
{
|
{
|
||||||
void LoadTilesAsync(IEnumerable<Tile> tiles, TileSource tileSource, string sourceName);
|
void LoadTiles(IEnumerable<Tile> tiles, TileSource tileSource, string sourceName);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract class MapTileLayerBase : Panel, IMapLayer
|
public abstract class MapTileLayerBase : Panel, IMapLayer
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,7 @@ namespace MapControl
|
||||||
public static string CacheKeyFormat { get; set; } = "{0}/{1}/{2}/{3}{4}";
|
public static string CacheKeyFormat { get; set; } = "{0}/{1}/{2}/{3}{4}";
|
||||||
|
|
||||||
|
|
||||||
public class TileQueue : ConcurrentStack<Tile>
|
private class TileQueue : ConcurrentStack<Tile>
|
||||||
{
|
{
|
||||||
public void Enqueue(IEnumerable<Tile> tiles)
|
public void Enqueue(IEnumerable<Tile> tiles)
|
||||||
{
|
{
|
||||||
|
|
@ -58,10 +58,10 @@ namespace MapControl
|
||||||
/// Loads all pending tiles from the tiles collection.
|
/// Loads all pending tiles from the tiles collection.
|
||||||
/// If tileSource.UriFormat starts with "http" and sourceName is a non-empty string,
|
/// If tileSource.UriFormat starts with "http" and sourceName is a non-empty string,
|
||||||
/// tile images will be cached in the TileImageLoader's Cache (if it's not null).
|
/// tile images will be cached in the TileImageLoader's Cache (if it's not null).
|
||||||
/// The method is async void because it implements void ITileImageLoader.LoadTilesAsync
|
/// The method is async void because it implements void ITileImageLoader.LoadTiles
|
||||||
/// and is not awaited when it is called in MapTileLayer.UpdateTiles().
|
/// and is not awaited when it is called in MapTileLayer.UpdateTiles().
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public async void LoadTilesAsync(IEnumerable<Tile> tiles, TileSource tileSource, string sourceName)
|
public async void LoadTiles(IEnumerable<Tile> tiles, TileSource tileSource, string sourceName)
|
||||||
{
|
{
|
||||||
tileQueue.Clear();
|
tileQueue.Clear();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -186,7 +186,7 @@ namespace MapControl
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
TileImageLoader.LoadTilesAsync(tiles, tileSource, sourceName);
|
TileImageLoader.LoadTiles(tiles, tileSource, sourceName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private async void OnLoaded(object sender, RoutedEventArgs e)
|
private async void OnLoaded(object sender, RoutedEventArgs e)
|
||||||
|
|
|
||||||
|
|
@ -56,7 +56,9 @@ namespace MapControl
|
||||||
|
|
||||||
if (buffer != null && buffer.Length > 0)
|
if (buffer != null && buffer.Length > 0)
|
||||||
{
|
{
|
||||||
SetTileImageAsync(tile, await ImageLoader.LoadImageAsync(buffer).ConfigureAwait(false));
|
var image = await ImageLoader.LoadImageAsync(buffer).ConfigureAwait(false);
|
||||||
|
|
||||||
|
SetTileImage(tile, image);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -64,15 +66,15 @@ namespace MapControl
|
||||||
{
|
{
|
||||||
var image = await tileSource.LoadImageAsync(tile.XIndex, tile.Y, tile.ZoomLevel).ConfigureAwait(false);
|
var image = await tileSource.LoadImageAsync(tile.XIndex, tile.Y, tile.ZoomLevel).ConfigureAwait(false);
|
||||||
|
|
||||||
if (image != null)
|
SetTileImage(tile, image);
|
||||||
{
|
|
||||||
SetTileImageAsync(tile, image);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void SetTileImageAsync(Tile tile, ImageSource image)
|
private static void SetTileImage(Tile tile, ImageSource image)
|
||||||
{
|
{
|
||||||
tile.Image.Dispatcher.InvokeAsync(() => tile.SetImage(image));
|
if (image != null)
|
||||||
|
{
|
||||||
|
tile.Image.Dispatcher.InvokeAsync(() => tile.SetImage(image));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static Task<ImageCacheItem> GetCacheAsync(string cacheKey)
|
private static Task<ImageCacheItem> GetCacheAsync(string cacheKey)
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue