diff --git a/MapControl/UWP/Map.UWP.cs b/MapControl/UWP/Map.UWP.cs index 3d21c01c..fcfa157e 100644 --- a/MapControl/UWP/Map.UWP.cs +++ b/MapControl/UWP/Map.UWP.cs @@ -2,6 +2,7 @@ // © 2020 Clemens Fischer // Licensed under the Microsoft Public License (Ms-PL) +using System; using Windows.UI.Xaml; using Windows.UI.Xaml.Input; @@ -44,9 +45,9 @@ namespace MapControl private void OnPointerWheelChanged(object sender, PointerRoutedEventArgs e) { var point = e.GetCurrentPoint(this); - var zoomDelta = MouseWheelZoomDelta * point.Properties.MouseWheelDelta / 120d; + var zoomLevel = TargetZoomLevel + MouseWheelZoomDelta * Math.Sign(point.Properties.MouseWheelDelta); - ZoomMap(point.Position, TargetZoomLevel + zoomDelta); + ZoomMap(point.Position, MouseWheelZoomDelta * Math.Round(zoomLevel / MouseWheelZoomDelta)); } } } diff --git a/MapControl/WPF/Map.WPF.cs b/MapControl/WPF/Map.WPF.cs index f8a55ab1..93cbc103 100644 --- a/MapControl/WPF/Map.WPF.cs +++ b/MapControl/WPF/Map.WPF.cs @@ -2,6 +2,7 @@ // © 2020 Clemens Fischer // Licensed under the Microsoft Public License (Ms-PL) +using System; using System.Windows; using System.Windows.Input; @@ -98,9 +99,9 @@ namespace MapControl private void OnMouseWheel(object sender, MouseWheelEventArgs e) { - var zoomDelta = MouseWheelZoomDelta * e.Delta / 120d; + var zoomLevel = TargetZoomLevel + MouseWheelZoomDelta * Math.Sign(e.Delta); - ZoomMap(e.GetPosition(this), TargetZoomLevel + zoomDelta); + ZoomMap(e.GetPosition(this), MouseWheelZoomDelta * Math.Round(zoomLevel / MouseWheelZoomDelta)); } } }