mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2026-04-06 15:05:50 +00:00
Version 4.12.2 Improved ImageLoader/TileImageLoader
This commit is contained in:
parent
4a7e384152
commit
fefc4e3294
9 changed files with 102 additions and 171 deletions
|
|
@ -6,7 +6,6 @@ using System;
|
|||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.IO;
|
||||
using System.Net.Http;
|
||||
using System.Threading.Tasks;
|
||||
#if WINDOWS_UWP
|
||||
|
|
@ -22,7 +21,7 @@ namespace MapControl
|
|||
public static partial class ImageLoader
|
||||
{
|
||||
/// <summary>
|
||||
/// The System.Net.Http.HttpClient instance used when image data is downloaded via a http or https Uri.
|
||||
/// The System.Net.Http.HttpClient instance used to download images via a http or https Uri.
|
||||
/// </summary>
|
||||
public static HttpClient HttpClient { get; set; } = new HttpClient();
|
||||
|
||||
|
|
@ -41,12 +40,9 @@ namespace MapControl
|
|||
{
|
||||
var response = await GetHttpResponseAsync(uri);
|
||||
|
||||
if (response?.Stream != null)
|
||||
if (response != null && response.Buffer != null)
|
||||
{
|
||||
using (var stream = response.Stream)
|
||||
{
|
||||
image = await LoadImageAsync(stream);
|
||||
}
|
||||
image = await LoadImageAsync(response.Buffer);
|
||||
}
|
||||
}
|
||||
else
|
||||
|
|
@ -90,7 +86,7 @@ namespace MapControl
|
|||
|
||||
internal class HttpResponse
|
||||
{
|
||||
public MemoryStream Stream { get; private set; }
|
||||
public byte[] Buffer { get; private set; }
|
||||
public TimeSpan? MaxAge { get; private set; }
|
||||
|
||||
internal static async Task<HttpResponse> Create(HttpResponseMessage message, bool continueOnCapturedContext)
|
||||
|
|
@ -100,9 +96,7 @@ namespace MapControl
|
|||
|
||||
if (!message.Headers.TryGetValues("X-VE-Tile-Info", out tileInfo) || !tileInfo.Contains("no-tile"))
|
||||
{
|
||||
response.Stream = new MemoryStream();
|
||||
await message.Content.CopyToAsync(response.Stream).ConfigureAwait(continueOnCapturedContext);
|
||||
response.Stream.Seek(0, SeekOrigin.Begin);
|
||||
response.Buffer = await message.Content.ReadAsByteArrayAsync().ConfigureAwait(continueOnCapturedContext);
|
||||
response.MaxAge = message.Headers.CacheControl?.MaxAge;
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue