Beispiel #1
0
        private void RegionPoint_MouseMove(object sender, MouseEventArgs e)
        {
            Point       p   = e.GetPosition(Map);
            PointLatLng pll = Map.FromLocalToLatLng((int)p.X, (int)p.Y);

            if (_isMidpoint)
            {
                Points.Insert(_currentPointIndex + 1, pll);
                _regionHitMarker.Points.Insert(_currentPointIndex + 1, pll);
                _regionPoints.Insert(_currentPointIndex + 1, _regionMidpoints[_currentPointIndex]);
                _regionMidpoints[_currentPointIndex].IsMidpoint = false;
                _regionMidpoints.RemoveAt(_currentPointIndex);
                _currentPointIndex++;
                _isMidpoint = false;
            }
            else
            {
                if (_currentPointIndex == 0)
                {
                    Position = pll;
                }
                Points[_currentPointIndex] = pll;
                if (_regionMidpoints.Count == _regionPoints.Count)
                {
                    for (int i = _currentPointIndex - 1; i <= _currentPointIndex; i++)
                    {
                        int curIndex = i;
                        if (curIndex == -1)
                        {
                            curIndex = _regionPoints.Count - 1;
                        }
                        GPoint curPoint  = Map.FromLatLngToLocal(_regionPoints[curIndex].Position);
                        GPoint nextPoint = Map.FromLatLngToLocal(i == _regionPoints.Count - 1 ? _regionPoints[0].Position : _regionPoints[i + 1].Position);
                        _regionMidpoints[curIndex].Position = Map.FromLocalToLatLng((int)(nextPoint.X + curPoint.X) / 2, (int)(nextPoint.Y + curPoint.Y) / 2);
                    }
                }
            }
            _regionPoints[_currentPointIndex].Position = pll;
            RegenerateShape(Map);
            _regionHitMarker.Points[_currentPointIndex] = pll;
            _regionHitMarker.RegenerateShape(Map);
            _regionHitMarker.Shape.MouseLeave        += Region_MouseLeave;
            _regionHitMarker.Shape.MouseLeftButtonUp += RegionHit_MouseLeftButtonUp;
        }
Beispiel #2
0
        private void Shape_MouseEnter(object sender, MouseEventArgs e)
        {
            if (Map != null && IsSelectable)
            {
                var path   = (Path)sender;
                var marker = (RegionMarker)Map.Markers.First(m => m.Shape == path);
                for (int i = 0; i < marker.Points.Count; i++)
                {
                    PointLatLng curPoint  = marker.Points[i];
                    PointLatLng nextPoint = i == marker.Points.Count - 1 ? marker.Points[0] : marker.Points[i + 1];
                    CreateMidpoint(i, curPoint, nextPoint);
                    CreatePoint(i, curPoint);
                }

                _regionHitMarker = new RegionHitMarker(marker.Points);
                _regionHitMarker.RegenerateShape(Map);
                _regionHitMarker.Shape.MouseLeave        += Region_MouseLeave;
                _regionHitMarker.Shape.MouseLeftButtonUp += RegionHit_MouseLeftButtonUp;
                Map.OnMapZoomChanged += Map_OnMapZoomChanged;
                Map.Markers.Add(_regionHitMarker);
            }
        }
Beispiel #3
0
        private void Shape_MouseEnter(object sender, MouseEventArgs e)
        {
            if (Map != null && IsSelectable)
            {
                var path = (Path) sender;
                var marker = (RegionMarker) Map.Markers.First(m => m.Shape == path);
                for (int i = 0; i < marker.Points.Count; i++)
                {
                    PointLatLng curPoint = marker.Points[i];
                    PointLatLng nextPoint = i == marker.Points.Count - 1 ? marker.Points[0] : marker.Points[i + 1];
                    CreateMidpoint(i, curPoint, nextPoint);
                    CreatePoint(i, curPoint);
                }

                _regionHitMarker = new RegionHitMarker(marker.Points);
                _regionHitMarker.RegenerateShape(Map);
                _regionHitMarker.Shape.MouseLeave += Region_MouseLeave;
                _regionHitMarker.Shape.MouseLeftButtonUp += RegionHit_MouseLeftButtonUp;
                Map.OnMapZoomChanged += Map_OnMapZoomChanged;
                Map.Markers.Add(_regionHitMarker);
            }
        }