コード例 #1
0
        /// <summary>
        /// 添加编辑点
        /// </summary>
        private void InitMarker()
        {
            var    pointDot    = circleArcMap.GetCenterDot();
            IPoint centerPoint = new PointClass()
            {
                X = pointDot.Lng, Y = pointDot.Lat
            };
            bool markerBeing = false;
            int  i           = 1;

            for (float ang = 0; ang <= 270; ang += 90)
            {
                var point = GetPointByDistanceAndAngle(circleArcMap.GetRadius(), centerPoint, ang);
                editPoint = new Model.EditMarker(mapControl, layer);
                markerList.Add(editPoint);
                if (!markerBeing)
                {
                    editPoint.MarkerMouseDownEvent += new Model.EditMarker.MarkerMouseDownDelegate(editPoint_MarkerMouseDownEvent);
                    editPoint.MarkerMouseMoveEvent += new Model.EditMarker.MarkerMouseMoveDelegate(editPoint_MarkerMouseMoveEvent);
                }
                editPoint.InitMarker(i.ToString(), point);
                (layer as CompositeGraphicsLayerClass).AddElement(editPoint, 0);
                markerBeing = true;
                i++;
            }
            editPoint    = new Model.EditMarker(mapControl, layer);
            centerMarker = new Model.EditMarker(mapControl, layer);
            editPoint.InitMarker("s", centerPoint);
            centerMarker = editPoint;
            (layer as CompositeGraphicsLayerClass).AddElement(editPoint, 0);
            mapControl.ActiveView.PartialRefresh(esriViewDrawPhase.esriViewGraphics, circleElement, null);
        }
コード例 #2
0
ファイル: EditCircleEx.cs プロジェクト: AnuoF/MapFrame
        /// <summary>
        /// 获取270度点的位置
        /// </summary>
        /// <returns></returns>
        private PointLatLng Get270RandomPoint()
        {
            MapLngLat   centerMapPoint = circleElement.GetCenterDot();
            double      seg            = Math.PI * 270 / 180;
            double      a            = centerMapPoint.Lng + circleElement.GetRadius() * Math.Cos(seg) / 100000;
            double      b            = centerMapPoint.Lat + circleElement.GetRadius() * Math.Sin(seg) / 100000;
            PointLatLng randomLatLng = new PointLatLng(b, a);

            return(randomLatLng);
        }
コード例 #3
0
ファイル: EditCircle.cs プロジェクト: AnuoF/MapFrame
        /// <summary>
        /// 执行命令
        /// </summary>
        public void RunCommond()
        {
            if (circleMarker == null)
            {
                return;
            }

            // 添加编辑图层
            overlay = new GMapOverlay("edit_layer");
            gmapControl.Overlays.Add(overlay);

            // 获取圆心和半径
            centerPoint = circleMarker.Position;
            radius      = circleElement.GetRadius();

            // 添加编辑图元
            AddEditMarker();

            Utils.bPublishEvent = false;
            // 订阅事件
            gmapControl.OnMarkerEnter += gmapControl_OnMarkerEnter;
            gmapControl.DoubleClick   += gmapControl_DoubleClick;
            gmapControl.KeyDown       += gmapControl_KeyDown;

            gmapControl.OnMarkerLeave += gmapControl_OnMarkerLeave;
            gmapControl.MouseDown     += gmapControl_MouseDown;
            gmapControl.MouseUp       += gmapControl_MouseUp;
            gmapControl.MouseMove     += gmapControl_MouseMove;
            gmapControl.OnMarkerClick += gmapControl_OnMarkerClick;

            bOnMarkerEnter = true;
            bOnMarkerLeave = true;
        }