/// <summary>
        /// Удалить объекты слоя
        /// </summary>
        /// <param name="table">Таблица</param>
        /// <param name="ids">Список ID объектов</param>
        /// <returns>Результат операции</returns>
        public bool DeleteObjects(CosM.CosmeticTableBaseM table, mvIntArray ids)
        {
            if (table != null && ids != null)
            {
                try
                {
                    var layer = MapViewer.getLayer(table.Name);
                    if (layer != null)
                    {
                        bool result = true;

                        for (int i = 0; i < ids.count; i++)
                        {
                            try
                            {
                                mvVectorObject obj = layer.getObject(ids.getElem(i));
                                int            id  = Convert.ToInt32((string)obj.fieldValue(table.PkFieldName));
                                result &= table.DeleteObject(id);
                            }
                            catch { result = false; }
                        }
                        result &= layer.DeleteArray(ids);

                        return(result);
                    }
                }
                catch { }
            }
            return(false);
        }
Пример #2
0
        /// <summary>
        /// Создает объект в списке
        /// Если объект существует на карте, то его значение обновляется, иначе объект создается
        /// </summary>
        /// <param name="label">Значение подписи</param>
        /// <param name="wkt">Геометрия</param>
        /// <param name="mapObj">Объект на карте</param>
        /// <returns>Созданный объект</returns>
        public CosmeticObjectM CreateObject(string label, string wkt, mvVectorObject mapObj = null)
        {
            var tableObj = new CosmeticObjectM(NextObjectId, wkt);

            tableObj.SetAttribute("label", label);
            Objects.Add(tableObj);

            var layerMV = (Source as SourceCosmetic.ViewModel.CosmeticDataRepositoryVM).MapViewer.getLayer(NameMap);

            if (layerMV != null && tableObj != null)
            {
                if (mapObj == null)
                {
                    mapObj = layerMV.getObject(tableObj.Id);
                    if (mapObj == null)
                    {
                        mapObj = layerMV.CreateObject();
                    }
                }

                if (mapObj != null)
                {
                    mapObj.setWKT(wkt);
                    mapObj.SetAttribute("label", label);
                    mapObj.SetAttribute(PkFieldName, tableObj.Id.ToString());
                }
            }

            return(tableObj);
        }
Пример #3
0
 /// <summary>
 /// Команда обнавления списка объектов
 /// </summary>
 public void Reload(object obj = null)
 {
     Data.Clear();
     _mvLayer.RemoveDeletedObjects();
     TableRows = _mvLayer.ObjectsCount;
     for (int i = 1; i <= TableRows; i++)
     {
         DataRow        dr       = Data.NewRow();
         mvVectorObject mvObject = _mvLayer.getObjectByNum(i);
         foreach (DataColumn col in Data.Columns)
         {
             var colValue = mvObject.fieldValue(col.ColumnName);
             dr[col.ColumnName] = colValue;
         }
         Data.Rows.Add(dr);
     }
 }
Пример #4
0
        /// <summary>
        /// Копирование выделенных объектов
        /// </summary>
        public void CopySelectedObjects(object parameter = null)
        {
            _mvLayer.RemoveDeletedObjects();
            try
            {
                foreach (DataRowView drv in SelectedItems)
                {
                    DataRow        dr     = drv.Row;
                    int            id     = Convert.ToInt32(dr["id"]);
                    mvVectorObject mvObj  = _mvLayer.getObject(id);
                    mvVectorObject newObj = _mvLayer.CreateObject();
                    newObj.setWKT(mvObj.getWKT());
                    String labelValue = mvObj.fieldValue("label") == null ? null : mvObj.fieldValue("label").ToString();
                    newObj.SetAttribute("label", labelValue);
                    newObj.SetAttribute("id", _cosTable.NextObjectId.ToString());
                    switch (mvObj.VectorType)
                    {
                    case mvVecTypes.mvVecLine:
                        newObj.style = _cosTable.DefaultLineStyle.Value;
                        break;

                    case mvVecTypes.mvVecPoint:
                        newObj.style = _cosTable.DefaultDotStyle.Value;
                        break;

                    case mvVecTypes.mvVecRegion:
                        newObj.style = _cosTable.DefaultPolygonStyle.Value;
                        break;
                    }
                }
            }
            catch (NullReferenceException ex)
            {
                System.Windows.MessageBox.Show(Rekod.Properties.Resources.CosTableView_ObjectNotExists);
            }
            catch (Exception ex)
            {
                System.Windows.MessageBox.Show(ex.Message);
            }
            Reload();
            _mvLayer.ExternalFullReloadVisible();
            _axMapLib.mapRepaint();
        }