Update TileImageLoader

This commit is contained in:
ClemensFischer 2022-11-20 18:51:59 +01:00
parent 12e5d75ba9
commit 6d359a5a91
4 changed files with 9 additions and 20 deletions

View file

@ -149,7 +149,7 @@ namespace MapControl
{
if (string.IsNullOrEmpty(cacheName))
{
return LoadTile(tile, tileSource);
return LoadTile(tile, () => tileSource.LoadImageAsync(tile.XIndex, tile.Y, tile.ZoomLevel));
}
var uri = tileSource.GetUri(tile.XIndex, tile.Y, tile.ZoomLevel);

View file

@ -53,16 +53,11 @@ namespace MapControl
if (buffer != null && buffer.Length > 0)
{
await SetTileImage(tile, () => ImageLoader.LoadImageAsync(buffer)).ConfigureAwait(false);
await LoadTile(tile, () => ImageLoader.LoadImageAsync(buffer)).ConfigureAwait(false);
}
}
private static Task LoadTile(Tile tile, TileSource tileSource)
{
return SetTileImage(tile, () => tileSource.LoadImageAsync(tile.XIndex, tile.Y, tile.ZoomLevel));
}
private static async Task SetTileImage(Tile tile, Func<Task<ImageSource>> loadImageFunc)
private static async Task LoadTile(Tile tile, Func<Task<ImageSource>> loadImageFunc)
{
var tcs = new TaskCompletionSource<object>();

View file

@ -6,6 +6,7 @@ using System;
using System.IO;
using System.Runtime.Caching;
using System.Threading.Tasks;
using System.Windows.Media;
namespace MapControl
{
@ -45,15 +46,13 @@ namespace MapControl
if (buffer != null && buffer.Length > 0)
{
var image = await ImageLoader.LoadImageAsync(buffer).ConfigureAwait(false);
await tile.Image.Dispatcher.InvokeAsync(() => tile.SetImageSource(image));
await LoadTile(tile, () => ImageLoader.LoadImageAsync(buffer));
}
}
private static async Task LoadTile(Tile tile, TileSource tileSource)
private static async Task LoadTile(Tile tile, Func<Task<ImageSource>> loadImageFunc)
{
var image = await tileSource.LoadImageAsync(tile.XIndex, tile.Y, tile.ZoomLevel).ConfigureAwait(false);
var image = await loadImageFunc().ConfigureAwait(false);
await tile.Image.Dispatcher.InvokeAsync(() => tile.SetImageSource(image));
}

View file

@ -54,16 +54,11 @@ namespace MapControl
if (buffer != null && buffer.Length > 0)
{
await SetTileImage(tile, () => ImageLoader.LoadImageAsync(buffer)).ConfigureAwait(false);
await LoadTile(tile, () => ImageLoader.LoadImageAsync(buffer)).ConfigureAwait(false);
}
}
private static Task LoadTile(Tile tile, TileSource tileSource)
{
return SetTileImage(tile, () => tileSource.LoadImageAsync(tile.XIndex, tile.Y, tile.ZoomLevel));
}
private static Task SetTileImage(Tile tile, Func<Task<ImageSource>> loadImageFunc)
private static Task LoadTile(Tile tile, Func<Task<ImageSource>> loadImageFunc)
{
var tcs = new TaskCompletionSource();