mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Version 1.1.9: Support for mouse wheel events with delta values less than the default of 120. Added static field Tile.AnimationDuration. Fixed tile grid calculation with x values less than zero.
This commit is contained in:
parent
b1bfccd321
commit
35fc959034
|
|
@ -9,6 +9,6 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: AssemblyVersion("1.1.8")]
|
[assembly: AssemblyVersion("1.1.9")]
|
||||||
[assembly: AssemblyFileVersion("1.1.8")]
|
[assembly: AssemblyFileVersion("1.1.9")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,6 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: AssemblyVersion("1.1.8")]
|
[assembly: AssemblyVersion("1.1.9")]
|
||||||
[assembly: AssemblyFileVersion("1.1.8")]
|
[assembly: AssemblyFileVersion("1.1.9")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,8 @@ namespace MapControl
|
||||||
|
|
||||||
private void OnMouseWheel(object sender, MouseWheelEventArgs e)
|
private void OnMouseWheel(object sender, MouseWheelEventArgs e)
|
||||||
{
|
{
|
||||||
ZoomMap(e.GetPosition(this), TargetZoomLevel + MouseWheelZoomChange * Math.Sign(e.Delta));
|
var zoomChange = MouseWheelZoomChange * (double)e.Delta / MouseWheelDelta;
|
||||||
|
ZoomMap(e.GetPosition(this), TargetZoomLevel + zoomChange);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
private void OnMouseLeftButtonDown(object sender, MouseButtonEventArgs e)
|
||||||
|
|
|
||||||
|
|
@ -37,7 +37,8 @@ namespace MapControl
|
||||||
private void OnPointerWheelChanged(object sender, PointerRoutedEventArgs e)
|
private void OnPointerWheelChanged(object sender, PointerRoutedEventArgs e)
|
||||||
{
|
{
|
||||||
var point = e.GetCurrentPoint(this);
|
var point = e.GetCurrentPoint(this);
|
||||||
ZoomMap(point.Position, TargetZoomLevel + MouseWheelZoomChange * Math.Sign(point.Properties.MouseWheelDelta));
|
var zoomChange = MouseWheelZoomChange * (double)point.Properties.MouseWheelDelta / MouseWheelDelta;
|
||||||
|
ZoomMap(point.Position, TargetZoomLevel + zoomChange);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void OnPointerPressed(object sender, PointerRoutedEventArgs e)
|
private void OnPointerPressed(object sender, PointerRoutedEventArgs e)
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,8 @@ namespace MapControl
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public partial class Map : MapBase
|
public partial class Map : MapBase
|
||||||
{
|
{
|
||||||
|
private const double MouseWheelDelta = 120;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the amount by which the ZoomLevel property changes during a MouseWheel event.
|
/// Gets or sets the amount by which the ZoomLevel property changes during a MouseWheel event.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
||||||
|
|
@ -16,6 +16,6 @@ using System.Windows;
|
||||||
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: AssemblyVersion("1.1.8")]
|
[assembly: AssemblyVersion("1.1.9")]
|
||||||
[assembly: AssemblyFileVersion("1.1.8")]
|
[assembly: AssemblyFileVersion("1.1.9")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -13,6 +13,8 @@ namespace MapControl
|
||||||
{
|
{
|
||||||
public partial class Tile
|
public partial class Tile
|
||||||
{
|
{
|
||||||
|
public static TimeSpan AnimationDuration = TimeSpan.FromSeconds(0.5);
|
||||||
|
|
||||||
public readonly int ZoomLevel;
|
public readonly int ZoomLevel;
|
||||||
public readonly int X;
|
public readonly int X;
|
||||||
public readonly int Y;
|
public readonly int Y;
|
||||||
|
|
@ -42,7 +44,7 @@ namespace MapControl
|
||||||
return new DoubleAnimation
|
return new DoubleAnimation
|
||||||
{
|
{
|
||||||
To = 1d,
|
To = 1d,
|
||||||
Duration = TimeSpan.FromSeconds(0.5),
|
Duration = AnimationDuration,
|
||||||
FillBehavior = FillBehavior.HoldEnd,
|
FillBehavior = FillBehavior.HoldEnd,
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -22,8 +22,6 @@ namespace MapControl
|
||||||
|
|
||||||
protected void RenderTiles()
|
protected void RenderTiles()
|
||||||
{
|
{
|
||||||
//System.Diagnostics.Trace.TraceInformation("{0} Tiles: {1}", tiles.Count, string.Join(", ", tiles.Select(t => t.ZoomLevel.ToString())));
|
|
||||||
|
|
||||||
using (var drawingContext = RenderOpen())
|
using (var drawingContext = RenderOpen())
|
||||||
{
|
{
|
||||||
foreach (var tile in tiles)
|
foreach (var tile in tiles)
|
||||||
|
|
|
||||||
|
|
@ -119,8 +119,8 @@ namespace MapControl
|
||||||
for (var z = minZoomLevel; z <= maxZoomLevel; z++)
|
for (var z = minZoomLevel; z <= maxZoomLevel; z++)
|
||||||
{
|
{
|
||||||
var tileSize = 1 << (zoomLevel - z);
|
var tileSize = 1 << (zoomLevel - z);
|
||||||
var x1 = grid.X / tileSize;
|
var x1 = (int)Math.Floor((double)grid.X / (double)tileSize);
|
||||||
var x2 = (grid.X + grid.Width - 1) / tileSize;
|
var x2 = (int)Math.Ceiling((double)(grid.X + grid.Width - 1) / (double)tileSize);
|
||||||
var y1 = Math.Max(0, grid.Y / tileSize);
|
var y1 = Math.Max(0, grid.Y / tileSize);
|
||||||
var y2 = Math.Min((1 << z) - 1, (grid.Y + grid.Height - 1) / tileSize);
|
var y2 = Math.Min((1 << z) - 1, (grid.Y + grid.Height - 1) / tileSize);
|
||||||
|
|
||||||
|
|
@ -134,7 +134,8 @@ namespace MapControl
|
||||||
{
|
{
|
||||||
tile = new Tile(z, x, y);
|
tile = new Tile(z, x, y);
|
||||||
|
|
||||||
var equivalentTile = tiles.FirstOrDefault(t => t.ImageSource != null && t.ZoomLevel == z && t.XIndex == tile.XIndex && t.Y == y);
|
var equivalentTile = tiles.FirstOrDefault(
|
||||||
|
t => t.ImageSource != null && t.ZoomLevel == z && t.XIndex == tile.XIndex && t.Y == y);
|
||||||
|
|
||||||
if (equivalentTile != null)
|
if (equivalentTile != null)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,6 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: AssemblyVersion("1.1.8")]
|
[assembly: AssemblyVersion("1.1.9")]
|
||||||
[assembly: AssemblyFileVersion("1.1.8")]
|
[assembly: AssemblyFileVersion("1.1.9")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,6 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: AssemblyVersion("1.1.8")]
|
[assembly: AssemblyVersion("1.1.9")]
|
||||||
[assembly: AssemblyFileVersion("1.1.8")]
|
[assembly: AssemblyFileVersion("1.1.9")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,6 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: AssemblyVersion("1.1.8")]
|
[assembly: AssemblyVersion("1.1.9")]
|
||||||
[assembly: AssemblyFileVersion("1.1.8")]
|
[assembly: AssemblyFileVersion("1.1.9")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -9,6 +9,6 @@ using System.Runtime.InteropServices;
|
||||||
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: AssemblyVersion("1.1.8")]
|
[assembly: AssemblyVersion("1.1.9")]
|
||||||
[assembly: AssemblyFileVersion("1.1.8")]
|
[assembly: AssemblyFileVersion("1.1.9")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ using System.Windows;
|
||||||
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: AssemblyVersion("1.1.8")]
|
[assembly: AssemblyVersion("1.1.9")]
|
||||||
[assembly: AssemblyFileVersion("1.1.8")]
|
[assembly: AssemblyFileVersion("1.1.9")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
|
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ using System.Windows;
|
||||||
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
[assembly: AssemblyCopyright("Copyright © 2013 Clemens Fischer")]
|
||||||
[assembly: AssemblyTrademark("")]
|
[assembly: AssemblyTrademark("")]
|
||||||
[assembly: AssemblyCulture("")]
|
[assembly: AssemblyCulture("")]
|
||||||
[assembly: AssemblyVersion("1.1.8")]
|
[assembly: AssemblyVersion("1.1.9")]
|
||||||
[assembly: AssemblyFileVersion("1.1.8")]
|
[assembly: AssemblyFileVersion("1.1.9")]
|
||||||
[assembly: ComVisible(false)]
|
[assembly: ComVisible(false)]
|
||||||
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
|
[assembly: ThemeInfo(ResourceDictionaryLocation.None, ResourceDictionaryLocation.SourceAssembly)]
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue