From fd02476c6b4d141d044e8f226106319e686f22fb Mon Sep 17 00:00:00 2001 From: ClemensF Date: Sun, 8 Oct 2017 17:35:07 +0200 Subject: [PATCH] Version 4.2.0 --- .../Properties/AssemblyInfo.cs | 4 +- .../Properties/AssemblyInfo.cs | 4 +- MBTiles/UWP/Properties/AssemblyInfo.cs | 4 +- MBTiles/WPF/Properties/AssemblyInfo.cs | 4 +- MapControl/Shared/BingMapsTileLayer.cs | 3 +- MapControl/Shared/MapImageLayer.cs | 14 ++-- MapControl/Shared/TileSource.cs | 44 +++++++++++ MapControl/Shared/WmsImageLayer.cs | 18 +++-- MapControl/UWP/MapImageLayer.UWP.cs | 6 -- MapControl/UWP/Properties/AssemblyInfo.cs | 4 +- MapControl/UWP/TileSource.UWP.cs | 78 +++++++++---------- MapControl/WPF/MapImageLayer.WPF.cs | 7 -- MapControl/WPF/Properties/AssemblyInfo.cs | 4 +- MapControl/WPF/TileSource.WPF.cs | 66 +++++++--------- SampleApps/Shared/MapLayers.cs | 47 ++++++----- .../UniversalApp/Properties/AssemblyInfo.cs | 4 +- .../WpfApplication/Properties/AssemblyInfo.cs | 4 +- 17 files changed, 174 insertions(+), 141 deletions(-) diff --git a/Caching/FileDbCache.UWP/Properties/AssemblyInfo.cs b/Caching/FileDbCache.UWP/Properties/AssemblyInfo.cs index 35f703e9..fd8eeaaa 100644 --- a/Caching/FileDbCache.UWP/Properties/AssemblyInfo.cs +++ b/Caching/FileDbCache.UWP/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2017 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.1.0")] -[assembly: AssemblyFileVersion("4.1.0")] +[assembly: AssemblyVersion("4.2.0")] +[assembly: AssemblyFileVersion("4.2.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/Caching/FileDbCache.WPF/Properties/AssemblyInfo.cs b/Caching/FileDbCache.WPF/Properties/AssemblyInfo.cs index e79c9e40..b98d6cf2 100644 --- a/Caching/FileDbCache.WPF/Properties/AssemblyInfo.cs +++ b/Caching/FileDbCache.WPF/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2017 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.1.0")] -[assembly: AssemblyFileVersion("4.1.0")] +[assembly: AssemblyVersion("4.2.0")] +[assembly: AssemblyFileVersion("4.2.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MBTiles/UWP/Properties/AssemblyInfo.cs b/MBTiles/UWP/Properties/AssemblyInfo.cs index 4f39d0aa..32547358 100644 --- a/MBTiles/UWP/Properties/AssemblyInfo.cs +++ b/MBTiles/UWP/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2017 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.1.0")] -[assembly: AssemblyFileVersion("4.1.0")] +[assembly: AssemblyVersion("4.2.0")] +[assembly: AssemblyFileVersion("4.2.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MBTiles/WPF/Properties/AssemblyInfo.cs b/MBTiles/WPF/Properties/AssemblyInfo.cs index 6bfb8f70..98d637ff 100644 --- a/MBTiles/WPF/Properties/AssemblyInfo.cs +++ b/MBTiles/WPF/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2017 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.1.0")] -[assembly: AssemblyFileVersion("4.1.0")] +[assembly: AssemblyVersion("4.2.0")] +[assembly: AssemblyFileVersion("4.2.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MapControl/Shared/BingMapsTileLayer.cs b/MapControl/Shared/BingMapsTileLayer.cs index 6aae5616..d2048c4a 100644 --- a/MapControl/Shared/BingMapsTileLayer.cs +++ b/MapControl/Shared/BingMapsTileLayer.cs @@ -61,7 +61,8 @@ namespace MapControl try { - var document = await XmlDocument.LoadFromUriAsync(new Uri(imageryMetadataUrl + "?output=xml&key=" + ApiKey)); + var uri = new Uri(imageryMetadataUrl + "?output=xml&key=" + ApiKey); + var document = await XmlDocument.LoadFromUriAsync(uri); var imageryMetadata = document.DocumentElement.GetElementsByTagName("ImageryMetadata").OfType().FirstOrDefault(); if (imageryMetadata != null) diff --git a/MapControl/Shared/MapImageLayer.cs b/MapControl/Shared/MapImageLayer.cs index 3b387dac..95e3f9dd 100644 --- a/MapControl/Shared/MapImageLayer.cs +++ b/MapControl/Shared/MapImageLayer.cs @@ -271,29 +271,25 @@ namespace MapControl } } - var imageUpdated = false; + ImageSource imageSource = null; try { - imageUpdated = UpdateImage(boundingBox); + imageSource = GetImage(boundingBox); } catch (Exception ex) { Debug.WriteLine("MapImageLayer: " + ex.Message); } - if (!imageUpdated) - { - UpdateImage((BitmapSource)null); - } + UpdateImage(imageSource); } } /// - /// Creates an image request Uri or a BitmapSource for the specified image bounding box. - /// Must either call UpdateImage(Uri) or UpdateImage(BitmapSource) or return false on failure. + /// Returns an ImageSource for the specified bounding box. /// - protected abstract bool UpdateImage(BoundingBox boundingBox); + protected abstract ImageSource GetImage(BoundingBox boundingBox); private void SetTopImage(ImageSource imageSource) { diff --git a/MapControl/Shared/TileSource.cs b/MapControl/Shared/TileSource.cs index aea491c4..8702dbd4 100644 --- a/MapControl/Shared/TileSource.cs +++ b/MapControl/Shared/TileSource.cs @@ -3,7 +3,16 @@ // Licensed under the Microsoft Public License (Ms-PL) using System; +using System.Diagnostics; using System.Globalization; +using System.Threading.Tasks; +#if WINDOWS_UWP +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Media.Imaging; +#else +using System.Windows.Media; +using System.Windows.Media.Imaging; +#endif namespace MapControl { @@ -85,6 +94,41 @@ namespace MapControl return getUri?.Invoke(x, y, zoomLevel); } + /// + /// Load a tile ImageSource asynchronously from GetUri(x, y, zoomLevel) + /// + public virtual async Task LoadImageAsync(int x, int y, int zoomLevel) + { + ImageSource imageSource = null; + + var uri = GetUri(x, y, zoomLevel); + + if (uri != null) + { + try + { + if (!uri.IsAbsoluteUri || uri.Scheme == "file") + { + imageSource = await LoadLocalImageAsync(uri); + } + else if (uri.Scheme == "http") + { + imageSource = await LoadHttpImageAsync(uri); + } + else + { + imageSource = new BitmapImage(uri); + } + } + catch (Exception ex) + { + Debug.WriteLine("TileSource: {0}: {1}", uri, ex.Message); + } + } + + return imageSource; + } + private Uri GetBasicUri(int x, int y, int zoomLevel) { return new Uri(uriFormat diff --git a/MapControl/Shared/WmsImageLayer.cs b/MapControl/Shared/WmsImageLayer.cs index 3761abf1..a5c59548 100644 --- a/MapControl/Shared/WmsImageLayer.cs +++ b/MapControl/Shared/WmsImageLayer.cs @@ -10,9 +10,13 @@ using System.Threading.Tasks; #if WINDOWS_UWP using Windows.Data.Xml.Dom; using Windows.UI.Xaml; +using Windows.UI.Xaml.Media; +using Windows.UI.Xaml.Media.Imaging; #else -using System.Windows; using System.Xml; +using System.Windows; +using System.Windows.Media; +using System.Windows.Media.Imaging; #endif namespace MapControl @@ -81,25 +85,25 @@ namespace MapControl set { SetValue(TransparentProperty, value); } } - protected override bool UpdateImage(BoundingBox boundingBox) + protected override ImageSource GetImage(BoundingBox boundingBox) { if (ServerUri == null) { - return false; + return null; } var projectionParameters = ParentMap.MapProjection.WmsQueryParameters(boundingBox, Version); if (string.IsNullOrEmpty(projectionParameters)) { - return false; + return null; } - UpdateImage(GetRequestUri("GetMap" + var uri = GetRequestUri("GetMap" + "&LAYERS=" + Layers + "&STYLES=" + Styles + "&FORMAT=" + Format - + "&TRANSPARENT=" + (Transparent ? "TRUE" : "FALSE") + "&" + projectionParameters)); + + "&TRANSPARENT=" + (Transparent ? "TRUE" : "FALSE") + "&" + projectionParameters); - return true; + return new BitmapImage(uri); } public async Task> GetLayerNamesAsync() diff --git a/MapControl/UWP/MapImageLayer.UWP.cs b/MapControl/UWP/MapImageLayer.UWP.cs index 6f505e75..2952266d 100644 --- a/MapControl/UWP/MapImageLayer.UWP.cs +++ b/MapControl/UWP/MapImageLayer.UWP.cs @@ -2,7 +2,6 @@ // © 2017 Clemens Fischer // Licensed under the Microsoft Public License (Ms-PL) -using System; using Windows.UI.Xaml; using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Media; @@ -12,11 +11,6 @@ namespace MapControl { public partial class MapImageLayer { - protected void UpdateImage(Uri uri) - { - UpdateImage(uri != null ? new BitmapImage(uri) : null); - } - protected void UpdateImage(ImageSource imageSource) { SetTopImage(imageSource); diff --git a/MapControl/UWP/Properties/AssemblyInfo.cs b/MapControl/UWP/Properties/AssemblyInfo.cs index 190e526b..88ed3866 100644 --- a/MapControl/UWP/Properties/AssemblyInfo.cs +++ b/MapControl/UWP/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2017 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.1.0")] -[assembly: AssemblyFileVersion("4.1.0")] +[assembly: AssemblyVersion("4.2.0")] +[assembly: AssemblyFileVersion("4.2.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MapControl/UWP/TileSource.UWP.cs b/MapControl/UWP/TileSource.UWP.cs index af6aecd4..5a5c47c3 100644 --- a/MapControl/UWP/TileSource.UWP.cs +++ b/MapControl/UWP/TileSource.UWP.cs @@ -4,7 +4,9 @@ using System; using System.Diagnostics; +using System.IO; using System.Threading.Tasks; +using Windows.Storage; using Windows.Storage.Streams; using Windows.UI.Xaml.Media; using Windows.UI.Xaml.Media.Imaging; @@ -21,7 +23,7 @@ namespace MapControl public static HttpClient HttpClient { get; set; } = new HttpClient(); /// - /// Check HTTP response headers for tile unavailability, e.g. X-VE-Tile-Info=no-tile + /// Check HTTP response headers for tile availability, e.g. X-VE-Tile-Info=no-tile /// public static bool TileAvailable(HttpResponseHeaderCollection responseHeaders) { @@ -30,54 +32,50 @@ namespace MapControl return !responseHeaders.TryGetValue("X-VE-Tile-Info", out tileInfo) || tileInfo != "no-tile"; } - /// - /// Load a tile ImageSource asynchronously from GetUri(x, y, zoomLevel) - /// - public virtual async Task LoadImageAsync(int x, int y, int zoomLevel) + protected async Task LoadLocalImageAsync(Uri uri) { - ImageSource imageSource = null; + var path = uri.IsAbsoluteUri ? uri.LocalPath : uri.OriginalString; - var uri = GetUri(x, y, zoomLevel); - - if (uri != null) + if (!await Task.Run(() => File.Exists(path))) { - try + return null; + } + + var file = await StorageFile.GetFileFromPathAsync(path); + + using (var stream = await file.OpenReadAsync()) + { + var bitmapImage = new BitmapImage(); + await bitmapImage.SetSourceAsync(stream); + + return bitmapImage; + } + } + + protected async Task LoadHttpImageAsync(Uri uri) + { + using (var response = await HttpClient.GetAsync(uri)) + { + if (!response.IsSuccessStatusCode) { - if (uri.Scheme == "http") - { - using (var response = await HttpClient.GetAsync(uri)) - { - if (!response.IsSuccessStatusCode) - { - Debug.WriteLine("TileSource: {0}: {1} {2}", uri, (int)response.StatusCode, response.ReasonPhrase); - } - else if (TileAvailable(response.Headers)) - { - using (var stream = new InMemoryRandomAccessStream()) - { - await response.Content.WriteToStreamAsync(stream); - stream.Seek(0); - - var bitmapImage = new BitmapImage(); - await bitmapImage.SetSourceAsync(stream); - - imageSource = bitmapImage; - } - } - } - } - else - { - imageSource = new BitmapImage(uri); - } + Debug.WriteLine("TileSource: {0}: {1} {2}", uri, (int)response.StatusCode, response.ReasonPhrase); } - catch (Exception ex) + else if (TileAvailable(response.Headers)) { - Debug.WriteLine("TileSource: {0}: {1}", uri, ex.Message); + using (var stream = new InMemoryRandomAccessStream()) + { + await response.Content.WriteToStreamAsync(stream); + stream.Seek(0); + + var bitmapImage = new BitmapImage(); + await bitmapImage.SetSourceAsync(stream); + + return bitmapImage; + } } } - return imageSource; + return null; } } } diff --git a/MapControl/WPF/MapImageLayer.WPF.cs b/MapControl/WPF/MapImageLayer.WPF.cs index ecdc2b9f..d1b65b95 100644 --- a/MapControl/WPF/MapImageLayer.WPF.cs +++ b/MapControl/WPF/MapImageLayer.WPF.cs @@ -11,13 +11,6 @@ namespace MapControl { public partial class MapImageLayer { - protected void UpdateImage(Uri uri) - { - UpdateImage(uri != null - ? BitmapFrame.Create(uri, BitmapCreateOptions.IgnoreImageCache, BitmapCacheOption.OnDemand) - : null); - } - protected void UpdateImage(ImageSource imageSource) { SetTopImage(imageSource); diff --git a/MapControl/WPF/Properties/AssemblyInfo.cs b/MapControl/WPF/Properties/AssemblyInfo.cs index 836cbd56..8c2592ab 100644 --- a/MapControl/WPF/Properties/AssemblyInfo.cs +++ b/MapControl/WPF/Properties/AssemblyInfo.cs @@ -8,8 +8,8 @@ using System.Windows; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2017 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.1.0")] -[assembly: AssemblyFileVersion("4.1.0")] +[assembly: AssemblyVersion("4.2.0")] +[assembly: AssemblyFileVersion("4.2.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MapControl/WPF/TileSource.WPF.cs b/MapControl/WPF/TileSource.WPF.cs index 96f1da7b..2c94270f 100644 --- a/MapControl/WPF/TileSource.WPF.cs +++ b/MapControl/WPF/TileSource.WPF.cs @@ -23,7 +23,7 @@ namespace MapControl public static HttpClient HttpClient { get; set; } = new HttpClient(); /// - /// Check HTTP response headers for tile unavailability, e.g. X-VE-Tile-Info=no-tile + /// Check HTTP response headers for tile availability, e.g. X-VE-Tile-Info=no-tile /// public static bool TileAvailable(HttpResponseHeaders responseHeaders) { @@ -32,51 +32,45 @@ namespace MapControl return !responseHeaders.TryGetValues("X-VE-Tile-Info", out tileInfo) || !tileInfo.Contains("no-tile"); } - /// - /// Load a tile ImageSource asynchronously from GetUri(x, y, zoomLevel) - /// - public virtual async Task LoadImageAsync(int x, int y, int zoomLevel) + protected Task LoadLocalImageAsync(Uri uri) { - ImageSource imageSource = null; - - var uri = GetUri(x, y, zoomLevel); - - if (uri != null) + return Task.Run(() => { - try - { - if (uri.Scheme == "http") - { - using (var response = await HttpClient.GetAsync(uri)) - { - if (!response.IsSuccessStatusCode) - { - Debug.WriteLine("TileSource: {0}: {1} {2}", uri, (int)response.StatusCode, response.ReasonPhrase); - } - else if (TileAvailable(response.Headers)) - { - using (var stream = new MemoryStream()) - { - await response.Content.CopyToAsync(stream); - stream.Seek(0, SeekOrigin.Begin); + var path = uri.IsAbsoluteUri ? uri.LocalPath : uri.OriginalString; - imageSource = await Task.Run(() => BitmapFrame.Create(stream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad)); - } - } - } - } - else + if (File.Exists(path)) + { + using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read)) { - imageSource = BitmapFrame.Create(uri, BitmapCreateOptions.None, BitmapCacheOption.OnLoad); + return (ImageSource)BitmapFrame.Create(stream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad); } } - catch (Exception ex) + + return null; + }); + } + + protected async Task LoadHttpImageAsync(Uri uri) + { + using (var response = await HttpClient.GetAsync(uri)) + { + if (!response.IsSuccessStatusCode) { - Debug.WriteLine("TileSource: {0}: {1}", uri, ex.Message); + Debug.WriteLine("TileSource: {0}: {1} {2}", uri, (int)response.StatusCode, response.ReasonPhrase); + } + else if (TileAvailable(response.Headers)) + { + using (var stream = new MemoryStream()) + { + await response.Content.CopyToAsync(stream); + stream.Seek(0, SeekOrigin.Begin); + + return await Task.Run(() => BitmapFrame.Create(stream, BitmapCreateOptions.None, BitmapCacheOption.OnLoad)); + } } } - return imageSource; + return null; } } } diff --git a/SampleApps/Shared/MapLayers.cs b/SampleApps/Shared/MapLayers.cs index 9ad942e8..57573814 100644 --- a/SampleApps/Shared/MapLayers.cs +++ b/SampleApps/Shared/MapLayers.cs @@ -38,7 +38,7 @@ namespace ViewModel new MapTileLayer { SourceName = "Stamen Terrain", - Description = "Map tiles by [Stamen Design](http://stamen.com/), under [CC BY 3.0](http://creativecommons.org/licenses/by/3.0). Data by OpenStreetMap, under [ODbL](http://www.openstreetmap.org/copyright)", + Description = "Map tiles by [Stamen Design](http://stamen.com/), under [CC BY 3.0](http://creativecommons.org/licenses/by/3.0)\nData by [OpenStreetMap](http://openstreetmap.org/), under [ODbL](http://www.openstreetmap.org/copyright)", TileSource = new TileSource { UriFormat = "http://tile.stamen.com/terrain/{z}/{x}/{y}.png" }, MaxZoomLevel = 17 } @@ -48,7 +48,7 @@ namespace ViewModel new MapTileLayer { SourceName = "Stamen Toner Light", - Description = "Map tiles by [Stamen Design](http://stamen.com/), under [CC BY 3.0](http://creativecommons.org/licenses/by/3.0). Data by OpenStreetMap, under [ODbL](http://www.openstreetmap.org/copyright)", + Description = "Map tiles by [Stamen Design](http://stamen.com/), under [CC BY 3.0](http://creativecommons.org/licenses/by/3.0)\nData by [OpenStreetMap](http://openstreetmap.org/), under [ODbL](http://www.openstreetmap.org/copyright)", TileSource = new TileSource { UriFormat = "http://tile.stamen.com/toner-lite/{z}/{x}/{y}.png" }, MaxZoomLevel = 18 } @@ -68,9 +68,8 @@ namespace ViewModel new BingMapsTileLayer { SourceName = "Bing Maps Road", - Description = "© [Microsoft Corporation](http://www.bing.com/maps/)", - Mode = BingMapsTileLayer.MapMode.Road, - MaxZoomLevel = 19 + Description = "© [Microsoft](http://www.bing.com/maps/)", + Mode = BingMapsTileLayer.MapMode.Road } }, { @@ -78,9 +77,8 @@ namespace ViewModel new BingMapsTileLayer { SourceName = "Bing Maps Aerial", - Description = "© [Microsoft Corporation](http://www.bing.com/maps/)", + Description = "© [Microsoft](http://www.bing.com/maps/)", Mode = BingMapsTileLayer.MapMode.Aerial, - MaxZoomLevel = 19, MapForeground = new SolidColorBrush(Colors.White), MapBackground = new SolidColorBrush(Colors.Black) } @@ -90,9 +88,8 @@ namespace ViewModel new BingMapsTileLayer { SourceName = "Bing Maps Hybrid", - Description = "© [Microsoft Corporation](http://www.bing.com/maps/)", + Description = "© [Microsoft](http://www.bing.com/maps/)", Mode = BingMapsTileLayer.MapMode.AerialWithLabels, - MaxZoomLevel = 19, MapForeground = new SolidColorBrush(Colors.White), MapBackground = new SolidColorBrush(Colors.Black) } @@ -101,20 +98,28 @@ namespace ViewModel "OpenStreetMap WMS", new WmsImageLayer { - Description = "OpenStreetMap WMS", + Description = "© [terrestris GmbH & Co. KG](http://ows.terrestris.de/)\nData © [OpenStreetMap contributors](http://www.openstreetmap.org/copyright)", ServerUri = new Uri("http://ows.terrestris.de/osm/service"), - Layers = "OSM-WMS", - MapBackground = new SolidColorBrush(Colors.LightGray) + Layers = "OSM-WMS" } }, { "OpenStreetMap TOPO WMS", new WmsImageLayer { - Description = "OpenStreetMap TOPO WMS", + Description = "© [terrestris GmbH & Co. KG](http://ows.terrestris.de/)\nData © [OpenStreetMap contributors](http://www.openstreetmap.org/copyright)", ServerUri = new Uri("http://ows.terrestris.de/osm/service"), - Layers = "TOPO-OSM-WMS", - MapBackground = new SolidColorBrush(Colors.LightGray) + Layers = "TOPO-OSM-WMS" + } + }, + { + "SevenCs ChartServer", + new WmsImageLayer + { + Description = "© [SevenCs GmbH](http://www.sevencs.com)", + ServerUri = new Uri("http://chartserver4.sevencs.com:8080"), + Layers = "ENC", + MaxBoundingBoxWidth = 360 } } }; @@ -149,7 +154,8 @@ namespace ViewModel "Stamen Terrain", "Stamen Toner Light", "OpenStreetMap WMS", - "OpenStreetMap TOPO WMS" + "OpenStreetMap TOPO WMS", + "SevenCs ChartServer" }; public MapLayers() @@ -161,9 +167,12 @@ namespace ViewModel // A Bing Maps API Key (see http://msdn.microsoft.com/en-us/library/ff428642.aspx) is required // for using these layers and must be assigned to the static BingMapsTileLayer.ApiKey property. - //MapLayerNames.Add("Bing Maps Road"); - //MapLayerNames.Add("Bing Maps Aerial"); - //MapLayerNames.Add("Bing Maps Aerial with Labels"); + if (!string.IsNullOrEmpty(BingMapsTileLayer.ApiKey)) + { + MapLayerNames.Add("Bing Maps Road"); + MapLayerNames.Add("Bing Maps Aerial"); + MapLayerNames.Add("Bing Maps Aerial with Labels"); + } } } } diff --git a/SampleApps/UniversalApp/Properties/AssemblyInfo.cs b/SampleApps/UniversalApp/Properties/AssemblyInfo.cs index 707adb37..747e4986 100644 --- a/SampleApps/UniversalApp/Properties/AssemblyInfo.cs +++ b/SampleApps/UniversalApp/Properties/AssemblyInfo.cs @@ -8,7 +8,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyCopyright("© 2017 Clemens Fischer")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -[assembly: AssemblyVersion("4.1.0")] -[assembly: AssemblyFileVersion("4.1.0")] +[assembly: AssemblyVersion("4.2.0")] +[assembly: AssemblyFileVersion("4.2.0")] [assembly: AssemblyConfiguration("")] [assembly: ComVisible(false)] diff --git a/SampleApps/WpfApplication/Properties/AssemblyInfo.cs b/SampleApps/WpfApplication/Properties/AssemblyInfo.cs index 6b00c967..034ae944 100644 --- a/SampleApps/WpfApplication/Properties/AssemblyInfo.cs +++ b/SampleApps/WpfApplication/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2017 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("4.1.0")] -[assembly: AssemblyFileVersion("4.1.0")] +[assembly: AssemblyVersion("4.2.0")] +[assembly: AssemblyFileVersion("4.2.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)]