From c8161f2dce67af1b93ff9d21347281d9d272d4e6 Mon Sep 17 00:00:00 2001 From: ClemensF Date: Sat, 4 Jun 2016 08:42:38 +0200 Subject: [PATCH] Version 2.10.0: Improved calculation of viewport positions. --- .../FileDbCache.WPF/Properties/AssemblyInfo.cs | 4 ++-- .../Properties/AssemblyInfo.cs | 4 ++-- .../Properties/AssemblyInfo.cs | 4 ++-- .../Properties/AssemblyInfo.cs | 4 ++-- MapControl/ImageLoader.cs | 3 +++ MapControl/MapPanel.cs | 12 +++++++++--- MapControl/MapPath.cs | 18 +++++++++++++++--- MapControl/Properties/AssemblyInfo.cs | 4 ++-- MapControl/TileImageLoader.WinRT.cs | 2 +- MapControl/WinRT/Properties/AssemblyInfo.cs | 4 ++-- .../Properties/AssemblyInfo.cs | 4 ++-- .../Properties/AssemblyInfo.cs | 4 ++-- .../Properties/AssemblyInfo.cs | 4 ++-- .../Properties/AssemblyInfo.cs | 4 ++-- .../UniversalApp/Properties/AssemblyInfo.cs | 4 ++-- SampleApps/WpfApplication/MainWindow.xaml.cs | 12 ++++++++++++ .../WpfApplication/Properties/AssemblyInfo.cs | 4 ++-- 17 files changed, 64 insertions(+), 31 deletions(-) diff --git a/Caching/FileDbCache.WPF/Properties/AssemblyInfo.cs b/Caching/FileDbCache.WPF/Properties/AssemblyInfo.cs index 1a3fe8fd..251c59dd 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("© 2016 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.9.0")] -[assembly: AssemblyFileVersion("2.9.0")] +[assembly: AssemblyVersion("2.10.0")] +[assembly: AssemblyFileVersion("2.10.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/Caching/FileDbCache.WinRT/Properties/AssemblyInfo.cs b/Caching/FileDbCache.WinRT/Properties/AssemblyInfo.cs index b0a86cd7..667bcf76 100644 --- a/Caching/FileDbCache.WinRT/Properties/AssemblyInfo.cs +++ b/Caching/FileDbCache.WinRT/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2016 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.9.0")] -[assembly: AssemblyFileVersion("2.9.0")] +[assembly: AssemblyVersion("2.10.0")] +[assembly: AssemblyFileVersion("2.10.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/Caching/ImageFileCache.WPF/Properties/AssemblyInfo.cs b/Caching/ImageFileCache.WPF/Properties/AssemblyInfo.cs index 29e80ee7..7dfbba8c 100644 --- a/Caching/ImageFileCache.WPF/Properties/AssemblyInfo.cs +++ b/Caching/ImageFileCache.WPF/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2016 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.9.0")] -[assembly: AssemblyFileVersion("2.9.0")] +[assembly: AssemblyVersion("2.10.0")] +[assembly: AssemblyFileVersion("2.10.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/Caching/ImageFileCache.WinRT/Properties/AssemblyInfo.cs b/Caching/ImageFileCache.WinRT/Properties/AssemblyInfo.cs index acdfec75..b2ad0fd0 100644 --- a/Caching/ImageFileCache.WinRT/Properties/AssemblyInfo.cs +++ b/Caching/ImageFileCache.WinRT/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2016 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.9.0")] -[assembly: AssemblyFileVersion("2.9.0")] +[assembly: AssemblyVersion("2.10.0")] +[assembly: AssemblyFileVersion("2.10.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MapControl/ImageLoader.cs b/MapControl/ImageLoader.cs index 75c579b8..1cb1e889 100644 --- a/MapControl/ImageLoader.cs +++ b/MapControl/ImageLoader.cs @@ -10,6 +10,9 @@ using System.Windows.Media.Imaging; namespace MapControl { + /// + /// Creates frozen BitmapSources from Stream or Uri. + /// internal static class ImageLoader { public static BitmapSource FromStream(Stream stream) diff --git a/MapControl/MapPanel.cs b/MapControl/MapPanel.cs index e5729333..24dd7f5c 100644 --- a/MapControl/MapPanel.cs +++ b/MapControl/MapPanel.cs @@ -136,9 +136,15 @@ namespace MapControl if (parentMap != null && location != null) { - viewportPosition = parentMap.LocationToViewportPoint(new Location( - location.Latitude, - Location.NearestLongitude(location.Longitude, parentMap.Center.Longitude))); + viewportPosition = parentMap.LocationToViewportPoint(location); + + if (viewportPosition.X < 0d || viewportPosition.X > parentMap.RenderSize.Width || + viewportPosition.Y < 0d || viewportPosition.Y > parentMap.RenderSize.Height) + { + viewportPosition = parentMap.LocationToViewportPoint(new Location( + location.Latitude, + Location.NearestLongitude(location.Longitude, parentMap.Center.Longitude))); + } if ((bool)element.GetValue(FrameworkElement.UseLayoutRoundingProperty)) { diff --git a/MapControl/MapPath.cs b/MapControl/MapPath.cs index c3c295a6..6435d3d1 100644 --- a/MapControl/MapPath.cs +++ b/MapControl/MapPath.cs @@ -89,10 +89,22 @@ namespace MapControl private void OnViewportChanged(object sender, EventArgs e) { - var longitude = Location.NormalizeLongitude(MapPanel.GetLocation(this).Longitude); + var location = MapPanel.GetLocation(this); - ((TranslateTransform)viewportTransform.Children[0]).X = - Location.NearestLongitude(longitude, parentMap.Center.Longitude) - longitude; + if (parentMap != null && location != null) + { + var viewportPosition = parentMap.LocationToViewportPoint(location); + var longitudeOffset = 0d; + + if (viewportPosition.X < 0d || viewportPosition.X > parentMap.RenderSize.Width || + viewportPosition.Y < 0d || viewportPosition.Y > parentMap.RenderSize.Height) + { + var longitude = Location.NormalizeLongitude(location.Longitude); + longitudeOffset = Location.NearestLongitude(longitude, parentMap.Center.Longitude) - longitude; + } + + ((TranslateTransform)viewportTransform.Children[0]).X = longitudeOffset; + } } } } diff --git a/MapControl/Properties/AssemblyInfo.cs b/MapControl/Properties/AssemblyInfo.cs index 777ea6de..75616e74 100644 --- a/MapControl/Properties/AssemblyInfo.cs +++ b/MapControl/Properties/AssemblyInfo.cs @@ -14,8 +14,8 @@ using System.Windows; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2016 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.9.0")] -[assembly: AssemblyFileVersion("2.9.0")] +[assembly: AssemblyVersion("2.10.0")] +[assembly: AssemblyFileVersion("2.10.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/MapControl/TileImageLoader.WinRT.cs b/MapControl/TileImageLoader.WinRT.cs index ef8dd5ce..ef480392 100644 --- a/MapControl/TileImageLoader.WinRT.cs +++ b/MapControl/TileImageLoader.WinRT.cs @@ -123,7 +123,7 @@ namespace MapControl { Interlocked.Increment(ref taskCount); - Task.Run(async () => await LoadPendingTiles(tileSource, sourceName)); + Task.Run(() => LoadPendingTiles(tileSource, sourceName)); // Task.Run(Func) } } } diff --git a/MapControl/WinRT/Properties/AssemblyInfo.cs b/MapControl/WinRT/Properties/AssemblyInfo.cs index 47ee4c3f..60a343f0 100644 --- a/MapControl/WinRT/Properties/AssemblyInfo.cs +++ b/MapControl/WinRT/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2016 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.9.0")] -[assembly: AssemblyFileVersion("2.9.0")] +[assembly: AssemblyVersion("2.10.0")] +[assembly: AssemblyFileVersion("2.10.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/SampleApps/PhoneApplication/Properties/AssemblyInfo.cs b/SampleApps/PhoneApplication/Properties/AssemblyInfo.cs index 14018598..b79570d7 100644 --- a/SampleApps/PhoneApplication/Properties/AssemblyInfo.cs +++ b/SampleApps/PhoneApplication/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2016 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.9.0")] -[assembly: AssemblyFileVersion("2.9.0")] +[assembly: AssemblyVersion("2.10.0")] +[assembly: AssemblyFileVersion("2.10.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/SampleApps/SilverlightApplication.Web/Properties/AssemblyInfo.cs b/SampleApps/SilverlightApplication.Web/Properties/AssemblyInfo.cs index e213dbd4..96a02167 100644 --- a/SampleApps/SilverlightApplication.Web/Properties/AssemblyInfo.cs +++ b/SampleApps/SilverlightApplication.Web/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2016 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.9.0")] -[assembly: AssemblyFileVersion("2.9.0")] +[assembly: AssemblyVersion("2.10.0")] +[assembly: AssemblyFileVersion("2.10.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/SampleApps/SilverlightApplication/Properties/AssemblyInfo.cs b/SampleApps/SilverlightApplication/Properties/AssemblyInfo.cs index 568257f5..0713b53e 100644 --- a/SampleApps/SilverlightApplication/Properties/AssemblyInfo.cs +++ b/SampleApps/SilverlightApplication/Properties/AssemblyInfo.cs @@ -7,8 +7,8 @@ using System.Runtime.InteropServices; [assembly: AssemblyCompany("Clemens Fischer")] [assembly: AssemblyCopyright("© 2016 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.9.0")] -[assembly: AssemblyFileVersion("2.9.0")] +[assembly: AssemblyVersion("2.10.0")] +[assembly: AssemblyFileVersion("2.10.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)] diff --git a/SampleApps/StoreApplication/Properties/AssemblyInfo.cs b/SampleApps/StoreApplication/Properties/AssemblyInfo.cs index 728fd766..213687f2 100644 --- a/SampleApps/StoreApplication/Properties/AssemblyInfo.cs +++ b/SampleApps/StoreApplication/Properties/AssemblyInfo.cs @@ -8,7 +8,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyCopyright("© 2015 Clemens Fischer")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -[assembly: AssemblyVersion("2.9.0")] -[assembly: AssemblyFileVersion("2.9.0")] +[assembly: AssemblyVersion("2.10.0")] +[assembly: AssemblyFileVersion("2.10.0")] [assembly: AssemblyConfiguration("")] [assembly: ComVisible(false)] diff --git a/SampleApps/UniversalApp/Properties/AssemblyInfo.cs b/SampleApps/UniversalApp/Properties/AssemblyInfo.cs index 93e8dd50..5f42ef9f 100644 --- a/SampleApps/UniversalApp/Properties/AssemblyInfo.cs +++ b/SampleApps/UniversalApp/Properties/AssemblyInfo.cs @@ -8,7 +8,7 @@ using System.Runtime.InteropServices; [assembly: AssemblyCopyright("© 2016 Clemens Fischer")] [assembly: AssemblyTrademark("")] [assembly: AssemblyCulture("")] -[assembly: AssemblyVersion("2.9.0")] -[assembly: AssemblyFileVersion("2.9.0")] +[assembly: AssemblyVersion("2.10.0")] +[assembly: AssemblyFileVersion("2.10.0")] [assembly: AssemblyConfiguration("")] [assembly: ComVisible(false)] diff --git a/SampleApps/WpfApplication/MainWindow.xaml.cs b/SampleApps/WpfApplication/MainWindow.xaml.cs index 311a5ef4..df0c0333 100644 --- a/SampleApps/WpfApplication/MainWindow.xaml.cs +++ b/SampleApps/WpfApplication/MainWindow.xaml.cs @@ -2,6 +2,7 @@ using System.Globalization; using System.Windows; using System.Windows.Input; +using System.Windows.Media; using MapControl; namespace WpfApplication @@ -15,6 +16,17 @@ namespace WpfApplication //BingMapsTileLayer.ApiKey = "..."; InitializeComponent(); + + for (double lon = -180; lon < 180; lon += 10) + { + var pushpin = new Pushpin { Content = lon }; + MapPanel.SetLocation(pushpin, new Location(50, lon)); + map.Children.Add(pushpin); + + var path = new MapPath { Data = new EllipseGeometry(new Point(lon, 60), 10, 10), Stroke = Brushes.Blue, StrokeThickness = 2 }; + MapPanel.SetLocation(path, new Location(50, lon)); + map.Children.Add(path); + } } private void MapMouseLeftButtonDown(object sender, MouseButtonEventArgs e) diff --git a/SampleApps/WpfApplication/Properties/AssemblyInfo.cs b/SampleApps/WpfApplication/Properties/AssemblyInfo.cs index ffc9d036..df2b8354 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("© 2016 Clemens Fischer")] [assembly: AssemblyTrademark("")] -[assembly: AssemblyVersion("2.9.0")] -[assembly: AssemblyFileVersion("2.9.0")] +[assembly: AssemblyVersion("2.10.0")] +[assembly: AssemblyFileVersion("2.10.0")] [assembly: AssemblyConfiguration("")] [assembly: AssemblyCulture("")] [assembly: ComVisible(false)]