Esempio n. 1
0
        void MapImage_MouseDown(SharpMap.Geometries.Point worldPos, MouseEventArgs e)
        {
            if (m_TargetLayerGuid == Guid.Empty)
            {
                return;
            }

            if (!m_IsMoveMode)
            {
                var area      = GIS_V4.Utils.GeometryUtils.PointToArea(worldPos, 3, MapImage.Map.PixelWidth);
                var fds       = new FeatureDataSet();
                var zoneLayer = UserDbLayersManager.GetUserLayer(m_TargetLayerGuid);
                zoneLayer.DataSource.ExecuteIntersectionQuery(area.GetBoundingBox(), fds);

                if (fds.Tables.Count <= 0)
                {
                    m_SelectedFeature = null;
                    return;
                }

                if (fds.Tables[0].Rows.Count <= 0)
                {
                    m_SelectedFeature = null;
                    MapImage.RefreshFromCache();
                    return;
                }

                m_SelectedFeature = fds.Tables[0][0];

                MapImage.RefreshFromCache();
            }
            else
            {
                //tool in move mode
                if (e.Button == MouseButtons.Left)
                {
                    //start shifting on mouse move
                    m_IsShifting    = true;
                    m_ShiftBeginPnt = worldPos;
                    m_LastShiftPnt  = new SharpMap.Geometries.Point(worldPos.X, worldPos.Y);
                }
            }

            if (m_SelectedFeature != null && e.Button == MouseButtons.Right)
            {
                if (m_SelectedFeature.Geometry.GetBoundingBox().Contains(worldPos))
                {
                    m_CMenu.Show(MapImage, e.Location);
                }
            }
        }
Esempio n. 2
0
        void mi_Move_Click(object sender, EventArgs e)
        {
            m_IsMoveMode = true;

            m_LastMovedTargetLayerGuid = m_TargetLayerGuid;
            m_MiMove.Visible           = false;
            m_MiApplyMovement.Visible  = true;
            m_MiCancelMovement.Visible = true;

            m_BufZoneUserLayer  = UserDbLayersManager.GetUserLayer(m_TargetLayerGuid);
            m_BufZoneLayer      = (EidssUserBufZoneLayer)m_BufZoneUserLayer;
            m_BufZoneBeforeEdit = m_BufZoneLayer.FeatureRowToStruct(m_SelectedFeature);

            var wkb = m_SelectedFeature.Geometry.AsBinary();//.AsText();

            m_GeomBeforeEdit = Geometry.GeomFromWKB(wkb);

            SubscribeApplyEvents();

            MapImage.RefreshFromCache();
        }
Esempio n. 3
0
        void m_MapImage_MouseMove(SharpMap.Geometries.Point worldPos, MouseEventArgs imagePos)
        {
            if (m_IsShifting && m_IsMoveMode)
            {
                var deltaX = worldPos.X - m_LastShiftPnt.X;
                var deltaY = worldPos.Y - m_LastShiftPnt.Y;

                if (m_SelectedFeature.Geometry is Polygon)
                {
                    var geom = (Polygon)m_SelectedFeature.Geometry;

                    foreach (var vertex in geom.ExteriorRing.Vertices)
                    {
                        vertex.X = vertex.X + deltaX;
                        vertex.Y = vertex.Y + deltaY;
                    }
                }

                m_LastShiftPnt = new SharpMap.Geometries.Point(worldPos.X, worldPos.Y);

                MapImage.RefreshFromCache();
            }
        }
Esempio n. 4
0
        private DialogResult ApplyMovement(bool clearSelection)
        {
            var dialogResult = MessageBox.Show(Resources.gis_MtSelectBufZones_BZApplyWarning, "",
                                               MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);

            if (dialogResult == DialogResult.Yes)
            {
                m_IsMoveMode = false;

                //apply changes
                m_MiMove.Visible           = true;
                m_MiApplyMovement.Visible  = false;
                m_MiCancelMovement.Visible = false;

                if (UserDbLayersManager.GetLayerMetadata(m_TargetLayerGuid).m_PivotalLayer != PivotLayerType.None || m_IsMoveMode)
                {
                    m_MiMove.Visible = false;
                }

                if (clearSelection)
                {
                    m_SelectedFeature = null;
                }

                m_GeomBeforeEdit = null;
                MapImage.RefreshFromCache();
                UnsubscribeApplyEvents();
            }
            else if (dialogResult == DialogResult.No)
            {
                m_IsMoveMode = false;
                UndoMovement(clearSelection);
            }

            return(dialogResult);
        }