Version 4.10.0: Updated target framework versions. Cleanup of TypeConverters, ImageLoader, MBTileSource.

This commit is contained in:
ClemensF 2018-08-14 23:13:58 +02:00
parent f2a9dd9d0d
commit d859a9c4f9
7 changed files with 123 additions and 14 deletions

View file

@ -34,7 +34,7 @@ namespace MapControl
{ {
imageSource = await LoadLocalImageAsync(uri); imageSource = await LoadLocalImageAsync(uri);
} }
else if (uri.Scheme == "http") else if (uri.Scheme == "http" || uri.Scheme == "https")
{ {
imageSource = await LoadHttpImageAsync(uri); imageSource = await LoadHttpImageAsync(uri);
} }

View file

@ -41,7 +41,7 @@ namespace MapControl
{ {
SourceName = "OpenStreetMap", SourceName = "OpenStreetMap",
Description = "© [OpenStreetMap Contributors](http://www.openstreetmap.org/copyright)", Description = "© [OpenStreetMap Contributors](http://www.openstreetmap.org/copyright)",
TileSource = new TileSource { UriFormat = "http://{c}.tile.openstreetmap.org/{z}/{x}/{y}.png" }, TileSource = new TileSource { UriFormat = "https://{c}.tile.openstreetmap.org/{z}/{x}/{y}.png" },
MaxZoomLevel = 19 MaxZoomLevel = 19
}; };
} }
@ -374,7 +374,7 @@ namespace MapControl
if (equivalentTile != null) if (equivalentTile != null)
{ {
tile.SetImage(equivalentTile.Image.Source, false); // do not animate to avoid flicker when crossing 180° longitude tile.SetImage(equivalentTile.Image.Source, false); // no fade-in animation
} }
} }

View file

@ -28,7 +28,8 @@ namespace MapControl
} }
else else
{ {
Image.BeginAnimation(UIElement.OpacityProperty, new DoubleAnimation { To = 1d, Duration = FadeDuration }); Image.BeginAnimation(UIElement.OpacityProperty, new DoubleAnimation { From = 0d, To = 1d, Duration = FadeDuration, FillBehavior = FillBehavior.Stop });
Image.Opacity = 1d;
} }
} }
else else
@ -46,7 +47,8 @@ namespace MapControl
bitmapImage.ImageOpened -= BitmapImageOpened; bitmapImage.ImageOpened -= BitmapImageOpened;
bitmapImage.ImageFailed -= BitmapImageFailed; bitmapImage.ImageFailed -= BitmapImageFailed;
Image.BeginAnimation(UIElement.OpacityProperty, new DoubleAnimation { To = 1d, Duration = FadeDuration }); Image.BeginAnimation(UIElement.OpacityProperty, new DoubleAnimation { From = 0d, To = 1d, Duration = FadeDuration, FillBehavior = FillBehavior.Stop });
Image.Opacity = 1d;
} }
private void BitmapImageFailed(object sender, ExceptionRoutedEventArgs e) private void BitmapImageFailed(object sender, ExceptionRoutedEventArgs e)

View file

@ -28,7 +28,8 @@ namespace MapControl
} }
else else
{ {
Image.BeginAnimation(UIElement.OpacityProperty, new DoubleAnimation(1d, FadeDuration)); Image.BeginAnimation(UIElement.OpacityProperty, new DoubleAnimation(0d, 1d, FadeDuration, FillBehavior.Stop));
Image.Opacity = 1d;
} }
} }
else else
@ -46,7 +47,8 @@ namespace MapControl
bitmapSource.DownloadCompleted -= BitmapDownloadCompleted; bitmapSource.DownloadCompleted -= BitmapDownloadCompleted;
bitmapSource.DownloadFailed -= BitmapDownloadFailed; bitmapSource.DownloadFailed -= BitmapDownloadFailed;
Image.BeginAnimation(UIElement.OpacityProperty, new DoubleAnimation(1d, FadeDuration)); Image.BeginAnimation(UIElement.OpacityProperty, new DoubleAnimation(0d, 1d, FadeDuration, FillBehavior.Stop));
Image.Opacity = 1d;
} }
private void BitmapDownloadFailed(object sender, ExceptionEventArgs e) private void BitmapDownloadFailed(object sender, ExceptionEventArgs e)

View file

@ -23,6 +23,20 @@ namespace ViewModel
"OpenStreetMap", "OpenStreetMap",
MapTileLayer.OpenStreetMapTileLayer MapTileLayer.OpenStreetMapTileLayer
}, },
{
"OpenStreetMap Files",
new MapTileLayer
{
SourceName = "OpenStreetMap Files",
Description = "© [OpenStreetMap contributors](http://www.openstreetmap.org/copyright)",
#if WINDOWS_UWP
TileSource = new TileSource { UriFormat = @"C:\Users\Clemens\AppData\Local\Packages\XamlMapControl.UniversalApp_2kan67jdewwkc\TempState\OpenStreetMap\{z}\{x}\{y}.png" },
#else
TileSource = new TileSource { UriFormat = @"C:\ProgramData\MapControl\TileCache\OpenStreetMap\{z}\{x}\{y}.png" },
#endif
MaxZoomLevel = 19
}
},
{ {
"OpenStreetMap German", "OpenStreetMap German",
new MapTileLayer new MapTileLayer
@ -118,10 +132,54 @@ namespace ViewModel
{ {
Description = "© [SevenCs GmbH](http://www.sevencs.com)", Description = "© [SevenCs GmbH](http://www.sevencs.com)",
ServiceUri = new Uri("http://chartserver4.sevencs.com:8080"), ServiceUri = new Uri("http://chartserver4.sevencs.com:8080"),
Layers = "ENC", Layers = "ENC"
MaxBoundingBoxWidth = 360
} }
},
{
"ECDIS DAY_BRIGHT",
new WmsImageLayer
{
Description = "ECDIS WMS DAY_BRIGHT",
ServiceUri = new Uri("http://as113121:8080/ECDIS?LAYERS=ENC&LIGHTS=TRUE&COLOR=0&DETAILS=2")
} }
},
{
"ECDIS DAY_WHITEBACK",
new WmsImageLayer
{
Description = "ECDIS WMS DAY_WHITEBACK",
ServiceUri = new Uri("http://as113121:8080/ECDIS?LAYERS=ENC&LIGHTS=TRUE&COLOR=1&DETAILS=2")
}
},
{
"ECDIS DAY_BLACKBACK",
new WmsImageLayer
{
Description = "ECDIS WMS DAY_BLACKBACK",
ServiceUri = new Uri("http://as113121:8080/ECDIS?LAYERS=ENC&LIGHTS=TRUE&COLOR=2&DETAILS=2"),
MapForeground = new SolidColorBrush(Colors.White)
}
},
{
"ECDIS DUSK",
new WmsImageLayer
{
Description = "ECDIS WMS DUSK",
ServiceUri = new Uri("http://as113121:8080/ECDIS?LAYERS=ENC&LIGHTS=TRUE&COLOR=3&DETAILS=2"),
MapForeground = new SolidColorBrush(Colors.Gray),
MapBackground = new SolidColorBrush(Colors.Black)
}
},
{
"ECDIS NIGHT",
new WmsImageLayer
{
Description = "ECDIS WMS NIGHT",
ServiceUri = new Uri("http://as113121:8080/ECDIS?LAYERS=ENC&LIGHTS=TRUE&COLOR=4&DETAILS=2"),
MapForeground = new SolidColorBrush(Colors.Gray),
MapBackground = new SolidColorBrush(Colors.Black)
}
},
}; };
private string currentMapLayerName = "OpenStreetMap"; private string currentMapLayerName = "OpenStreetMap";
@ -150,17 +208,23 @@ namespace ViewModel
public List<string> MapLayerNames { get; } = new List<string> public List<string> MapLayerNames { get; } = new List<string>
{ {
"OpenStreetMap", "OpenStreetMap",
"OpenStreetMap Files",
"OpenStreetMap German", "OpenStreetMap German",
"Stamen Terrain", "Stamen Terrain",
"Stamen Toner Light", "Stamen Toner Light",
"OpenStreetMap WMS", "OpenStreetMap WMS",
"OpenStreetMap TOPO WMS", "OpenStreetMap TOPO WMS",
"SevenCs ChartServer" "SevenCs ChartServer",
"ECDIS DAY_BRIGHT",
"ECDIS DAY_WHITEBACK",
"ECDIS DAY_BLACKBACK",
"ECDIS DUSK",
"ECDIS NIGHT",
}; };
public MapLayers() public MapLayers()
{ {
//BingMapsTileLayer.ApiKey = "..."; BingMapsTileLayer.ApiKey = "";
// Bing Maps TileLayers with tile URLs retrieved from the Imagery Metadata Service // Bing Maps TileLayers with tile URLs retrieved from the Imagery Metadata Service
// (see http://msdn.microsoft.com/en-us/library/ff701716.aspx). // (see http://msdn.microsoft.com/en-us/library/ff701716.aspx).
@ -173,6 +237,15 @@ namespace ViewModel
MapLayerNames.Add("Bing Maps Aerial"); MapLayerNames.Add("Bing Maps Aerial");
MapLayerNames.Add("Bing Maps Aerial with Labels"); MapLayerNames.Add("Bing Maps Aerial with Labels");
} }
//var t = new System.Windows.Threading.DispatcherTimer { Interval = TimeSpan.FromSeconds(1) };
//t.Tick += async (s, e) =>
//{
// var layers = await ((WmsImageLayer)mapLayers["OpenStreetMap WMS"]).GetLayerNamesAsync();
// System.Diagnostics.Debug.WriteLine(string.Join(", ", layers));
// t.Stop();
//};
//t.Start();
} }
} }
} }

View file

@ -1,9 +1,11 @@
using MapControl; using MapControl;
using MapControl.Caching; using MapControl.Caching;
using ViewModel; using ViewModel;
using Windows.UI;
using Windows.UI.Xaml; using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls; using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives; using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Media;
namespace UniversalApp namespace UniversalApp
{ {
@ -13,11 +15,40 @@ namespace UniversalApp
public MainPage() public MainPage()
{ {
//TileImageLoader.Cache = new ImageFileCache(TileImageLoader.DefaultCacheFolder); TileImageLoader.Cache = new ImageFileCache(TileImageLoader.DefaultCacheFolder);
//TileImageLoader.Cache = new FileDbCache(TileImageLoader.DefaultCacheFolder); //TileImageLoader.Cache = new FileDbCache(TileImageLoader.DefaultCacheFolder);
InitializeComponent(); InitializeComponent();
DataContext = ViewModel; DataContext = ViewModel;
for (var x = -180d; x < 180d; x += 15d)
{
var location = new Location(0d, x);
var locations = new LocationCollection
{
new Location(0, x - 5),
new Location(5, x),
new Location(0, x + 5),
new Location(-5, x)
};
map.Children.Add(new MapPolygon
{
Fill = new SolidColorBrush(Colors.Red) { Opacity = 0.25 },
Stroke = new SolidColorBrush(Colors.Red),
StrokeThickness = 2,
StrokeLineJoin = PenLineJoin.Round,
Locations = locations,
Location = location,
});
map.Children.Add(new Pushpin
{
Content = x,
Location = location,
});
}
} }
private void ImageOpacitySliderValueChanged(object sender, RangeBaseValueChangedEventArgs e) private void ImageOpacitySliderValueChanged(object sender, RangeBaseValueChangedEventArgs e)

View file

@ -11,8 +11,9 @@ namespace WpfApplication
{ {
public MainWindow() public MainWindow()
{ {
//TileImageLoader.Cache = new MapControl.Caching.ImageFileCache(TileImageLoader.DefaultCacheFolder); TileImageLoader.Cache = new MapControl.Caching.ImageFileCache(TileImageLoader.DefaultCacheFolder);
//TileImageLoader.Cache = new MapControl.Caching.FileDbCache(TileImageLoader.DefaultCacheFolder); //TileImageLoader.Cache = new MapControl.Caching.FileDbCache(TileImageLoader.DefaultCacheFolder);
//TileImageLoader.Cache = null;
InitializeComponent(); InitializeComponent();
} }