mirror of
https://github.com/ClemensFischer/XAML-Map-Control.git
synced 2025-12-06 07:12:04 +01:00
Map MouseWheel handler
This commit is contained in:
parent
65517b43cc
commit
404ddbb0f7
|
|
@ -27,6 +27,7 @@ namespace MapControl
|
||||||
public static readonly StyledProperty<double> MouseWheelZoomDeltaProperty =
|
public static readonly StyledProperty<double> MouseWheelZoomDeltaProperty =
|
||||||
DependencyPropertyHelper.Register<Map, double>(nameof(MouseWheelZoomDelta), 0.25);
|
DependencyPropertyHelper.Register<Map, double>(nameof(MouseWheelZoomDelta), 0.25);
|
||||||
|
|
||||||
|
private double mouseWheelDelta;
|
||||||
private IPointer pointer1;
|
private IPointer pointer1;
|
||||||
private IPointer pointer2;
|
private IPointer pointer2;
|
||||||
private Point position1;
|
private Point position1;
|
||||||
|
|
@ -50,8 +51,17 @@ namespace MapControl
|
||||||
|
|
||||||
protected override void OnPointerWheelChanged(PointerWheelEventArgs e)
|
protected override void OnPointerWheelChanged(PointerWheelEventArgs e)
|
||||||
{
|
{
|
||||||
ZoomMap(e.GetPosition(this), TargetZoomLevel + MouseWheelZoomDelta * e.Delta.Y);
|
mouseWheelDelta += e.Delta.Y;
|
||||||
e.Handled = true;
|
|
||||||
|
if (Math.Abs(mouseWheelDelta) >= 1d)
|
||||||
|
{
|
||||||
|
// Zoom to integer multiple of MouseWheelZoomDelta.
|
||||||
|
//
|
||||||
|
ZoomMap(e.GetPosition(this),
|
||||||
|
MouseWheelZoomDelta * Math.Round(TargetZoomLevel / MouseWheelZoomDelta + mouseWheelDelta));
|
||||||
|
|
||||||
|
mouseWheelDelta = 0d;
|
||||||
|
}
|
||||||
|
|
||||||
base.OnPointerWheelChanged(e);
|
base.OnPointerWheelChanged(e);
|
||||||
}
|
}
|
||||||
|
|
@ -64,7 +74,6 @@ namespace MapControl
|
||||||
point.Pointer.Type == PointerType.Touch && HandleTouchPressed(point))
|
point.Pointer.Type == PointerType.Touch && HandleTouchPressed(point))
|
||||||
{
|
{
|
||||||
point.Pointer.Capture(this);
|
point.Pointer.Capture(this);
|
||||||
e.Handled = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
base.OnPointerPressed(e);
|
base.OnPointerPressed(e);
|
||||||
|
|
@ -75,7 +84,6 @@ namespace MapControl
|
||||||
if (HandlePointerReleased(e.Pointer))
|
if (HandlePointerReleased(e.Pointer))
|
||||||
{
|
{
|
||||||
e.Pointer.Capture(null);
|
e.Pointer.Capture(null);
|
||||||
e.Handled = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
base.OnPointerReleased(e);
|
base.OnPointerReleased(e);
|
||||||
|
|
@ -83,10 +91,7 @@ namespace MapControl
|
||||||
|
|
||||||
protected override void OnPointerCaptureLost(PointerCaptureLostEventArgs e)
|
protected override void OnPointerCaptureLost(PointerCaptureLostEventArgs e)
|
||||||
{
|
{
|
||||||
if (HandlePointerReleased(e.Pointer))
|
HandlePointerReleased(e.Pointer);
|
||||||
{
|
|
||||||
e.Handled = true;
|
|
||||||
}
|
|
||||||
|
|
||||||
base.OnPointerCaptureLost(e);
|
base.OnPointerCaptureLost(e);
|
||||||
}
|
}
|
||||||
|
|
@ -106,8 +111,6 @@ namespace MapControl
|
||||||
TranslateMap(position - position1);
|
TranslateMap(position - position1);
|
||||||
position1 = position;
|
position1 = position;
|
||||||
}
|
}
|
||||||
|
|
||||||
e.Handled = true;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
base.OnPointerMoved(e);
|
base.OnPointerMoved(e);
|
||||||
|
|
|
||||||
|
|
@ -107,7 +107,7 @@ namespace MapControl
|
||||||
if (Math.Abs(mouseWheelDelta) >= 1d)
|
if (Math.Abs(mouseWheelDelta) >= 1d)
|
||||||
{
|
{
|
||||||
// Zoom to integer multiple of MouseWheelZoomDelta.
|
// Zoom to integer multiple of MouseWheelZoomDelta.
|
||||||
|
//
|
||||||
ZoomMap(e.GetPosition(this),
|
ZoomMap(e.GetPosition(this),
|
||||||
MouseWheelZoomDelta * Math.Round(TargetZoomLevel / MouseWheelZoomDelta + mouseWheelDelta));
|
MouseWheelZoomDelta * Math.Round(TargetZoomLevel / MouseWheelZoomDelta + mouseWheelDelta));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -84,7 +84,7 @@ namespace MapControl
|
||||||
if (Math.Abs(mouseWheelDelta) >= 1d)
|
if (Math.Abs(mouseWheelDelta) >= 1d)
|
||||||
{
|
{
|
||||||
// Zoom to integer multiple of MouseWheelZoomDelta.
|
// Zoom to integer multiple of MouseWheelZoomDelta.
|
||||||
|
//
|
||||||
ZoomMap(point.Position,
|
ZoomMap(point.Position,
|
||||||
MouseWheelZoomDelta * Math.Round(TargetZoomLevel / MouseWheelZoomDelta + mouseWheelDelta));
|
MouseWheelZoomDelta * Math.Round(TargetZoomLevel / MouseWheelZoomDelta + mouseWheelDelta));
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue