diff --git a/MapControl/Shared/ImageLoader.cs b/MapControl/Shared/ImageLoader.cs index 401fd4b7..fc2320dc 100644 --- a/MapControl/Shared/ImageLoader.cs +++ b/MapControl/Shared/ImageLoader.cs @@ -28,17 +28,24 @@ namespace MapControl { ImageSource imageSource = null; - if (!uri.IsAbsoluteUri || uri.Scheme == "file") + try { - imageSource = await LoadLocalImageAsync(uri); + if (!uri.IsAbsoluteUri || uri.Scheme == "file") + { + imageSource = await LoadLocalImageAsync(uri); + } + else if (uri.Scheme == "http") + { + imageSource = await LoadHttpImageAsync(uri); + } + else + { + imageSource = new BitmapImage(uri); + } } - else if (uri.Scheme == "http") + catch (Exception ex) { - imageSource = await LoadHttpImageAsync(uri); - } - else - { - imageSource = new BitmapImage(uri); + Debug.WriteLine("ImageLoader: {0}: {1}", uri, ex.Message); } return imageSource; @@ -48,19 +55,26 @@ namespace MapControl { ImageSource imageSource = null; - using (var response = await HttpClient.GetAsync(uri)) + try { - if (!response.IsSuccessStatusCode) + using (var response = await HttpClient.GetAsync(uri)) { - Debug.WriteLine("ImageLoader: {0}: {1} {2}", uri, (int)response.StatusCode, response.ReasonPhrase); + if (!response.IsSuccessStatusCode) + { + Debug.WriteLine("ImageLoader: {0}: {1} {2}", uri, (int)response.StatusCode, response.ReasonPhrase); + } + else if (IsTileAvailable(response.Headers)) + { + imageSource = await CreateImageSourceAsync(response.Content); + } } - else if (IsTileAvailable(response.Headers)) - { - imageSource = await CreateImageSourceAsync(response.Content); - } - - return imageSource; } + catch (Exception ex) + { + Debug.WriteLine("ImageLoader: {0}: {1}", uri, ex.Message); + } + + return imageSource; } } } \ No newline at end of file diff --git a/MapControl/Shared/TileSource.cs b/MapControl/Shared/TileSource.cs index a5b73faf..73ff4a67 100644 --- a/MapControl/Shared/TileSource.cs +++ b/MapControl/Shared/TileSource.cs @@ -3,7 +3,6 @@ // Licensed under the Microsoft Public License (Ms-PL) using System; -using System.Diagnostics; using System.Globalization; using System.Threading.Tasks; #if WINDOWS_UWP @@ -112,19 +111,11 @@ namespace MapControl public virtual async Task LoadImageAsync(int x, int y, int zoomLevel) { ImageSource imageSource = null; - var uri = GetUri(x, y, zoomLevel); if (uri != null) { - try - { - imageSource = await ImageLoader.LoadImageAsync(uri); - } - catch (Exception ex) - { - Debug.WriteLine("TileSource: {0}: {1}", uri, ex.Message); - } + imageSource = await ImageLoader.LoadImageAsync(uri); } return imageSource; diff --git a/MapControl/Shared/WmsImageLayer.cs b/MapControl/Shared/WmsImageLayer.cs index 46a82c0e..2733e109 100644 --- a/MapControl/Shared/WmsImageLayer.cs +++ b/MapControl/Shared/WmsImageLayer.cs @@ -124,14 +124,7 @@ namespace MapControl uri += "&FORMAT=" + Format; } - try - { - imageSource = await ImageLoader.LoadImageAsync(new Uri(uri.Replace(" ", "%20"))); - } - catch (Exception ex) - { - Debug.WriteLine("WmsImageLayer: {0}: {1}", uri, ex.Message); - } + imageSource = await ImageLoader.LoadImageAsync(new Uri(uri.Replace(" ", "%20"))); } return imageSource; diff --git a/MapControl/UWP/ImageLoader.UWP.cs b/MapControl/UWP/ImageLoader.UWP.cs index 8d297540..0b8cd655 100644 --- a/MapControl/UWP/ImageLoader.UWP.cs +++ b/MapControl/UWP/ImageLoader.UWP.cs @@ -20,17 +20,25 @@ namespace MapControl public static async Task LoadLocalImageAsync(Uri uri) { ImageSource imageSource = null; - var path = uri.IsAbsoluteUri ? uri.LocalPath : uri.OriginalString; - if (File.Exists(path)) + try { - var file = await StorageFile.GetFileFromPathAsync(path); + var path = uri.IsAbsoluteUri ? uri.LocalPath : uri.OriginalString; - using (var stream = await file.OpenReadAsync()) + if (File.Exists(path)) { - imageSource = await CreateImageSourceAsync(stream); + var file = await StorageFile.GetFileFromPathAsync(path); + + using (var stream = await file.OpenReadAsync()) + { + imageSource = await CreateImageSourceAsync(stream); + } } } + catch (Exception ex) + { + Debug.WriteLine("ImageLoader: {0}: {1}", uri, ex.Message); + } return imageSource; } diff --git a/MapControl/WPF/ImageLoader.WPF.cs b/MapControl/WPF/ImageLoader.WPF.cs index fda4aa73..2d02351e 100644 --- a/MapControl/WPF/ImageLoader.WPF.cs +++ b/MapControl/WPF/ImageLoader.WPF.cs @@ -17,11 +17,12 @@ namespace MapControl { public static partial class ImageLoader { - public static Task LoadLocalImageAsync(Uri uri) + public static ImageSource LoadLocalImage(Uri uri) { - return Task.Run(() => + ImageSource imageSource = null; + + try { - ImageSource imageSource = null; var path = uri.IsAbsoluteUri ? uri.LocalPath : uri.OriginalString; if (File.Exists(path)) @@ -31,9 +32,18 @@ namespace MapControl imageSource = CreateImageSource(stream); } } + } + catch (Exception ex) + { + Debug.WriteLine("ImageLoader: {0}: {1}", uri, ex.Message); + } - return imageSource; - }); + return imageSource; + } + + public static Task LoadLocalImageAsync(Uri uri) + { + return Task.Run(() => LoadLocalImage(uri)); } public static async Task> LoadHttpStreamAsync(Uri uri)