コード例 #1
0
ファイル: ucDrawBase.cs プロジェクト: haizhizhong/ReflexMap
        public ucDrawBase(HMCon con, TUC_HMDevXManager.TUC_HMDevXManager hmDevMgr, WpfMapDrawBase map)
        {
            _hmCon    = con;
            _hmDevMgr = hmDevMgr;
            _pop      = new frmPopup(hmDevMgr);
            _map      = map;

            _attrTable = new DataTable();
            _attrTable.Columns.Add(new DataColumn("Attribute"));
            _attrTable.Columns.Add(new DataColumn("Value"));
        }
コード例 #2
0
        public ucDrawPoint(HMCon con, TUC_HMDevXManager.TUC_HMDevXManager hmDevMgr, WpfMapDrawBase map, MapPointLayer layer, int layerIndex)
            : base(con, hmDevMgr, map)
        {
            InitializeComponent();

            _layer            = layer;
            _layerIndex       = layerIndex;
            gcAttr.DataSource = _attrTable;

            InDrawingStatus(false);
        }
コード例 #3
0
ファイル: ucDrawEvents.cs プロジェクト: haizhizhong/ReflexMap
        public ucDrawEvents(HMCon con, TUC_HMDevXManager.TUC_HMDevXManager hmDevMgr, WpfMapDrawBase map, MapEventLayer layer, int layerIndex)
            : base(con, hmDevMgr, map)
        {
            InitializeComponent();

            _layerList = new Dictionary <MapEventLayer, int>()
            {
                { layer, layerIndex }
            };
            cboType.Properties.Items.AddRange(_layerList.Keys);
            cboType.SelectedIndex = 0;

            gcAttr.DataSource = _attrTable;

            InDrawingStatus(false);
        }
コード例 #4
0
ファイル: frmMapDraw.cs プロジェクト: haizhizhong/ReflexMap
        public void Init(HMCon con, TUC_HMDevXManager.TUC_HMDevXManager hmDevMgr, List <DataRow> rowList, List <IMapLayer> layers)
        {
            _hmCon    = con;
            _hmDevMgr = hmDevMgr;
            _layers   = layers;
            _pop      = new frmPopup(_hmDevMgr);

            _map       = new WpfMapDrawBase(_hmDevMgr);
            host.Child = _map;

            _data = new Dictionary <int, List <IGeoInfo> >();
            DrawTabFactory factory = new DrawTabFactory();

            for (int i = 0; i < layers.Count; i++)
            {
                try
                {
                    _map.RegisterLayer(i, layers[i]);
                    ucDrawBase ucDraw = factory.CreateInstance(con, hmDevMgr, _map, layers[i], i);
                    if (ucDraw != null)
                    {
                        ucDraw.DrawingStatusChanged += SetDrawingMode;
                        if (ucDraw is ucDrawEvents)
                        {
                            ucDraw.ConvertTo <ucDrawEvents>().EventTypeChanged += FrmMapDraw_EventTypeChanged;
                            ucDraw.ConvertTo <ucDrawEvents>().MarkerChanged    += _map.EventMarkerChanged;
                            _map.PointTapped += ucDraw.ConvertTo <ucDrawEvents>().SetPoint;
                        }
                        else if (ucDraw is ucDrawShape)
                        {
                            _map.ItemTapped += ucDraw.ConvertTo <ucDrawShape>().SetItem;
                        }
                        else if (ucDraw is ucDrawLine)
                        {
                            _map.ItemTapped += ucDraw.ConvertTo <ucDrawLine>().SetItem;
                        }

                        var page = tabControl.TabPages.Add(layers[i] is MapEventLayer ? "Event" : layers[i].LayerName);
                        ucDraw.Parent = page;
                        ucDraw.Dock   = DockStyle.Fill;
                    }

                    _data.Add(i, MapData.GetDataList(con, rowList, layers[i]));
                }
                catch (ConstraintException ex)
                {
                    _pop.ShowPopup($"Error in loading {layers[i].LinkTable}: {ex.Message}");
                }
            }

            DataTable dataTable = new DataTable();

            dataTable.Columns.Add(new DataColumn("#"));
            foreach (var layer in layers)
            {
                layer.Attributes.ToList().ForEach(attr => {
                    if (dataTable.Columns.IndexOf(attr.LinkField) == -1)
                    {
                        DataColumn col = new DataColumn(attr.LinkField);
                        col.Caption    = attr.DisplayName;
                        dataTable.Columns.Add(col);
                    }
                });
            }

            foreach (var srcRow in rowList)
            {
                var row = dataTable.NewRow();

                foreach (var layer in layers)
                {
                    row["#"] = srcRow[layer.LinkColumn];
                    layer.Attributes.ToList().ForEach(attr => row[attr.LinkField] = attr.LinkDictionary?[$"{srcRow[attr.LinkField]}"] ?? srcRow[attr.LinkField]);
                }
                dataTable.Rows.Add(row);
            }

            gc.DataSource = dataTable;

            InDrawingStatus(false);
        }
コード例 #5
0
        public ucDrawBase CreateInstance(HMCon con, TUC_HMDevXManager.TUC_HMDevXManager hmDevMgr, WpfMapDrawBase map, IMapLayer info, int layerIndex)
        {
            if (info is MapPointLayer)
            {
                return(new ucDrawPoint(con, hmDevMgr, map, info.ConvertTo <MapPointLayer>(), layerIndex));
            }
            else if (info is MapShapeLayer)
            {
                return(new ucDrawShape(con, hmDevMgr, map, info.ConvertTo <MapShapeLayer>(), layerIndex));
            }
            else if (info is MapLineLayer)
            {
                return(new ucDrawLine(con, hmDevMgr, map, info.ConvertTo <MapLineLayer>(), layerIndex));
            }
            else if (info is MapEventLayer)
            {
                if (_eventDrawer == null)
                {
                    _eventDrawer = new ucDrawEvents(con, hmDevMgr, map, info.ConvertTo <MapEventLayer>(), layerIndex);
                    return(_eventDrawer);
                }
                else
                {
                    _eventDrawer.AddEventLayer(info.ConvertTo <MapEventLayer>(), layerIndex);
                    return(null);
                }
            }

            return(null);
        }