/// <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); }
/// <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); }
/// <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; }