Ejemplo n.º 1
0
        private void MapControl_PointerWheelChanged(object sender, PointerRoutedEventArgs e)
        {
            if (ZoomLocked)
            {
                return;
            }
            if (!_viewportInitialized)
            {
                return;
            }

            var currentPoint = e.GetCurrentPoint(this);
            //Needed for both MouseMove and MouseWheel event for mousewheel event

            var mousePosition = new Geometries.Point(currentPoint.RawPosition.X, currentPoint.RawPosition.Y);

            var newResolution = DetermineNewResolution(currentPoint.Properties.MouseWheelDelta, Map.Viewport.Resolution);

            // 1) Temporarily center on the mouse position
            Map.Viewport.Center = Map.Viewport.ScreenToWorld(mousePosition.X, mousePosition.Y);

            // 2) Then zoom
            Map.Viewport.Resolution = newResolution;

            // 3) Then move the temporary center of the map back to the mouse position
            Map.Viewport.Center = Map.Viewport.ScreenToWorld(
                Map.Viewport.Width - mousePosition.X,
                Map.Viewport.Height - mousePosition.Y);

            e.Handled = true;

            _map.ViewChanged(true);
            OnViewChanged(true);
        }
Ejemplo n.º 2
0
        public void ZoomToBox(Geometries.Point beginPoint, Geometries.Point endPoint)
        {
            double x, y, resolution;
            var    width  = Math.Abs(endPoint.X - beginPoint.X);
            var    height = Math.Abs(endPoint.Y - beginPoint.Y);

            if (width <= 0)
            {
                return;
            }
            if (height <= 0)
            {
                return;
            }

            ZoomHelper.ZoomToBoudingbox(beginPoint.X, beginPoint.Y, endPoint.X, endPoint.Y, ActualWidth, out x, out y,
                                        out resolution);
            resolution = ZoomHelper.ClipToExtremes(_map.Resolutions, resolution);

            Map.Viewport.Center     = new Geometries.Point(x, y);
            Map.Viewport.Resolution = resolution;

            _map.ViewChanged(true);
            OnViewChanged();
            RefreshGraphics();
            ClearBBoxDrawing();
        }
Ejemplo n.º 3
0
        private void _renderTarget_PaintSurface(object sender, SKPaintSurfaceEventArgs e)
        {
            if (!_viewportInitialized)
            {
                InitializeViewport();
            }
            if (!_viewportInitialized)
            {
                return;                        //stop if the line above failed.
            }
            if (!_invalid)
            {
                return;
            }

            if ((_renderer != null) && (_map != null))
            {
                if (_skiaScale == null)
                {
                    _skiaScale = GetSkiaScale();
                }
                e.Surface.Canvas.Scale((float)_skiaScale.X, (float)_skiaScale.Y);
                _renderer.Render(e.Surface.Canvas, Map.Viewport, _map.Layers, _map.BackColor);
                _renderTarget.Arrange(new Rect(0, 0, Map.Viewport.Width, Map.Viewport.Height));
                _invalid = false;
            }
        }
Ejemplo n.º 4
0
        private void _renderTarget_PaintSurface(object sender, SKPaintSurfaceEventArgs e)
        {
            if (!_viewportInitialized) InitializeViewport();
            if (!_viewportInitialized) return; //stop if the line above failed. 
            if (!_invalid) return;

            if ((_renderer != null) && (_map != null))
            {
                if (_skiaScale == null) _skiaScale = GetSkiaScale();
                e.Surface.Canvas.Scale((float)_skiaScale.X, (float)_skiaScale.Y);
                _renderer.Render(e.Surface.Canvas, Map.Viewport, _map.Layers, _map.BackColor);
                _renderTarget.Arrange(new Rect(0, 0, Map.Viewport.Width, Map.Viewport.Height));
                _invalid = false;
            }
        }
Ejemplo n.º 5
0
        private void MapControl_PointerWheelChanged(object sender, PointerRoutedEventArgs e)
        {
            if (ZoomLocked) return;
            if (!_viewportInitialized) return;

            var currentPoint = e.GetCurrentPoint(this);
            //Needed for both MouseMove and MouseWheel event for mousewheel event

            var mousePosition = new Geometries.Point(currentPoint.RawPosition.X, currentPoint.RawPosition.Y);

            var newResolution = DetermineNewResolution(currentPoint.Properties.MouseWheelDelta, Map.Viewport.Resolution);

            // 1) Temporarily center on the mouse position
            Map.Viewport.Center = Map.Viewport.ScreenToWorld(mousePosition.X, mousePosition.Y);

            // 2) Then zoom 
            Map.Viewport.Resolution = newResolution;

            // 3) Then move the temporary center of the map back to the mouse position
            Map.Viewport.Center = Map.Viewport.ScreenToWorld(
                Map.Viewport.Width - mousePosition.X,
                Map.Viewport.Height - mousePosition.Y);

            e.Handled = true;

            RefreshGraphics();
            _map.ViewChanged(true);
            OnViewChanged(true);
        }
Ejemplo n.º 6
0
 public Geometries.Point ScreenToWorld(Geometries.Point screenPosition)
 {
     return(SharedMapControl.ScreenToWorld(Map.Viewport, (float)_skiaScale.Y, screenPosition));
 }
Ejemplo n.º 7
0
 public Geometries.Point WorldToScreen(Geometries.Point worldPosition)
 {
     return(SharedMapControl.WorldToScreen(Map.Viewport, (float)_skiaScale.X, worldPosition));
 }