From 0f048e207335a62324960d341f0fd13d8ce4c2a6 Mon Sep 17 00:00:00 2001 From: ClemensFischer Date: Wed, 3 Sep 2025 23:42:38 +0200 Subject: [PATCH] Update GroundOverlay.cs --- MapControl/Shared/GroundOverlay.cs | 40 ++++++++++++++++-------------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/MapControl/Shared/GroundOverlay.cs b/MapControl/Shared/GroundOverlay.cs index 619d21ed..fe70e681 100644 --- a/MapControl/Shared/GroundOverlay.cs +++ b/MapControl/Shared/GroundOverlay.cs @@ -37,9 +37,24 @@ namespace MapControl ZIndex = zIndex; } + public async Task Load() + { + if (Stream != null) + { + Stream.Seek(0, SeekOrigin.Begin); + ImageSource = await ImageLoader.LoadImageAsync(Stream); + } + } + + public async Task Load(Uri docUri) + { + ImageSource = await ImageLoader.LoadImageAsync(new Uri(docUri, ImagePath)); + } + public string ImagePath { get; } public LatLonBox LatLonBox { get; } public int ZIndex { get; } + public Stream Stream { get; set; } public ImageSource ImageSource { get; set; } } @@ -131,16 +146,15 @@ namespace MapControl if (imageEntry != null) { using (var zipStream = imageEntry.Open()) - using (var memoryStream = new MemoryStream((int)zipStream.Length)) { - await zipStream.CopyToAsync(memoryStream); - memoryStream.Seek(0, SeekOrigin.Begin); - - imageOverlay.ImageSource = await ImageLoader.LoadImageAsync(memoryStream); + imageOverlay.Stream = new MemoryStream((int)zipStream.Length); + await zipStream.CopyToAsync(imageOverlay.Stream); } } } + Parallel.ForEach(imageOverlays, async imageOverlay => await imageOverlay.Load()); + return imageOverlays; } } @@ -158,20 +172,8 @@ namespace MapControl var docUri = new Uri(docFilePath); -#if NETFRAMEWORK - Parallel.ForEach(imageOverlays, async imageOverlay => - { - imageOverlay.ImageSource = await ImageLoader.LoadImageAsync(new Uri(docUri, imageOverlay.ImagePath)); - }); -#else - await Parallel.ForEachAsync(imageOverlays, async (imageOverlay, cancellationToken) => - { - if (!cancellationToken.IsCancellationRequested) - { - imageOverlay.ImageSource = await ImageLoader.LoadImageAsync(new Uri(docUri, imageOverlay.ImagePath)); - } - }); -#endif + Parallel.ForEach(imageOverlays, async imageOverlay => await imageOverlay.Load(docUri)); + return imageOverlays; }