Beispiel #1
0
        public TEditUserObj(GeoPoint[] pts, Pen pen, Brush brush, MapView mapView, string infoText, TEditUserObj.eType geometryType)
            : base(pts, geometryType == TEditUserObj.eType.Polygon, pen, brush)
        {
            //
            this.pts    = pts;
            this.limits = GeoRect.FromPoints(pts);

            //
            if (pen != null)
            {
                // обычное перо
                this.unselected_pen = pen;

                // перо для выделения
                this.selected_pen       = (pen.Clone() as Pen);
                this.selected_pen.Width = pen.Width + Math.Max((float)(pen.Width / 2.0), 1);
            }

            // вид на карту запоминаем для возможности смещения точек
            this.mapView = mapView;

            //
            this.geometryType = geometryType;
            this.InfoText     = infoText;
        }
Beispiel #2
0
        // Смещаем выделенную точку
        public void MovePoint(int dx, int dy)
        {
            if (!EnableEdit)
            {
                return;
            }

            int ind = selectedPointIndex;

            if (ind >= 0)
            {
                // объект выделен

                // т.к. объект замкнут, то возможно что выделен замыкающий отрезок,
                // а его последняя точка - это первая точка базового набора
                if (ind >= pts.Length)
                {
                    ind = 0;
                }
                ;

                // сдвигаем точку
                mapView.MoveCoordinate(pts[ind], dx, dy);

                // переиндексируем объект на карте
                ApplyPoints(pts, geometryType == TEditUserObj.eType.Polygon);

                // переиндексируем лимиты
                limits = GeoRect.FromPoints(pts);

                if (Changed != null)
                {
                    Changed(this, EventArgs.Empty);
                }
                ;
            }
            ;
        }
Beispiel #3
0
        private Point UpdatePosition(Point value)
        {
            if (MapView != null)
            {
                List <GeoPoint> geoPts = new List <GeoPoint>();
                switch (_drawPosition)
                {
                case DrawPosition.Center:
                    if (pts[0] != null)
                    {
                        geoPts.Add(pts[0]);
                    }
                    ;
                    geoPts.Add(MapView.GetCoordinate(new Point(value.X - _iconToDraw.Width / 2, value.Y - _iconToDraw.Height / 2)));
                    geoPts.Add(MapView.GetCoordinate(new Point(value.X + _iconToDraw.Width / 2, value.Y - _iconToDraw.Height / 2)));
                    geoPts.Add(MapView.GetCoordinate(new Point(value.X + _iconToDraw.Width / 2, value.Y + _iconToDraw.Height / 2)));
                    geoPts.Add(MapView.GetCoordinate(new Point(value.X - _iconToDraw.Width / 2, value.Y + _iconToDraw.Height / 2)));
                    break;

                case DrawPosition.LeftBottom:
                    geoPts.Add(pts[0]);
                    geoPts.Add(MapView.GetCoordinate(new Point(value.X + _iconToDraw.Width, value.Y)));
                    geoPts.Add(MapView.GetCoordinate(new Point(value.X + _iconToDraw.Width, value.Y - _iconToDraw.Height)));
                    geoPts.Add(MapView.GetCoordinate(new Point(value.X, value.Y - _iconToDraw.Height)));
                    break;

                default:
                    break;
                }
                ApplyPoints(geoPts, true);
                this.pts    = geoPts.ToArray();
                this.Limits = GeoRect.FromPoints(pts);
            }
            ;
            return(value);
        }