示例#1
0
        // Summary:
        //     Generate a label attributes according to the definition
        //     which is specified in the LayerDef
        //
        AttributeLabelClass generateLayerAttributeLable(LayerDef layerDef,
            Core.Geometry.GeometryType geometryType)
        {
            if (layerDef == null)
                return generateDefaultLayerAttributeLable(geometryType);

            IS3SymbolFont font = new IS3SymbolFont(
                layerDef.LabelFontFamily, layerDef.LabelFontSize);
            font.FontStyle = layerDef.LabelFontStyle;
            font.FontWeight = layerDef.LabelFontWeight;
            font.TextDecoration = layerDef.LabelTextDecoration;

            IS3TextSymbol textSymbol = new IS3TextSymbol();
            textSymbol.Color = layerDef.LabelColor;
            textSymbol.Font = font;
            textSymbol.BorderLineColor = layerDef.LabelBorderLineColor;
            textSymbol.BorderLineSize = layerDef.LabelBorderLineWidth;
            textSymbol.BackgroundColor = layerDef.LabelBackgroundColor;

            AttributeLabelClass labelClass = new AttributeLabelClass();
            labelClass.IsVisible = true;
            labelClass.TextExpression = layerDef.LabelTextExpression;
            labelClass.WhereClause = layerDef.LabelWhereClause;
            labelClass.Symbol = textSymbol;

            if (geometryType == Core.Geometry.GeometryType.Polygon)
                labelClass.LabelPlacement = LabelPlacement.PolygonAlwaysHorizontal;

            return labelClass;
        }
示例#2
0
        // Summary:
        //     Set the GraphicsLayer display options according to the definition
        //     which is specified in the LocalELayer.
        //     The display options include selection color, renderer, and labelling
        //
        void setGraphicLayerDisplayOptions(LayerDef layerDef, IS3GraphicsLayer gLayer)
        {
            if (layerDef == null || gLayer == null)
                return;

            gLayer.IsVisible = layerDef.IsVisible;

            gLayer.SelectionColor = layerDef.SelectionColor;
            if (layerDef.RendererDef == null)
            {
                ISymbol symbol = GraphicsUtil.GenerateLayerSymbol(layerDef, gLayer.geometryType);
                gLayer.renderer = Runtime.graphicEngine.newSimpleRenderer(symbol);
            }
            else
            {
                gLayer.renderer = Runtime.graphicEngine.newRenderer(layerDef.RendererDef);
            }

            if (layerDef.EnableLabel == true)
            {
                AttributeLabelClass labelClass = generateLayerAttributeLable(layerDef, gLayer.geometryType);
                gLayer.Labeling.LabelClasses.Add(labelClass);
            }
        }
示例#3
0
        // Summary:
        //     Add a layer in a shape file
        //     The name of the layer and display options are specified in the LocalELayer
        //
        public async Task<IGraphicsLayer> addShpLayer(LayerDef layerDef,
            string shpFile, int start = 0, int maxFeatures = 0)
        {
            if (layerDef == null || shpFile == null)
                return null;
            string filePath = _prj.projDef.LocalFilePath + "\\" + shpFile;
            if (File.Exists(filePath))
            {
                ShapefileTable table = await ShapefileTable.OpenAsync(filePath);
                if (table == null)
                    return null;

                IS3GraphicsLayer gLayer = await featureTable2GraphicsLayer(
                    table, start, maxFeatures, true);
                if (gLayer == null)
                    return null;

                gLayer.ID = layerDef.Name;
                setGraphicLayerDisplayOptions(layerDef, gLayer);

                _map.Layers.Add(gLayer);
                return gLayer;
            }
            return null;
        }
示例#4
0
        public async Task<IGraphicsLayer> addGdbLayer(LayerDef eLayer,
            string dbFile, int start = 0, int maxFeatures = 0)
        {
            if (dbFile == null)
                dbFile = _eMap.LocalGeoDbFileName;

            string filePath = _prj.projDef.LocalFilePath + "\\" + dbFile;

            if (File.Exists(filePath))
            {
                Geodatabase gdb = await Geodatabase.OpenAsync(filePath);
                IGraphicsLayer gLayer = await addGeodatabaseLayer(
                    eLayer, gdb, start, maxFeatures);
                return gLayer;
            }
            return null;
        }
示例#5
0
        // Summary:
        //     Add a layer in a geodatabase (aka. local layer)
        //     The name of the layer and display options are specified in the LocalELayer
        //
        public async Task<IGraphicsLayer> addGeodatabaseLayer(LayerDef layerDef,
            Geodatabase gdb, int start = 0, int maxFeatures = 0)
        {
            if (layerDef == null || gdb == null)
                return null;

            GeodatabaseFeatureTable table =
                gdb.FeatureTables.FirstOrDefault(t => t.Name == layerDef.Name);
            if (table == null)
                return null;

            IS3GraphicsLayer gLayer = await featureTable2GraphicsLayer(
                table, start, maxFeatures, false);
            if (gLayer == null)
                return null;

            gLayer.ID = layerDef.Name;
            gLayer.MinScale = table.ServiceInfo.MinScale;
            gLayer.MaxScale = table.ServiceInfo.MaxScale;
            setGraphicLayerDisplayOptions(layerDef, gLayer);
            
            _map.Layers.Add(gLayer);
            return gLayer;
        }
示例#6
0
 public Task<IGraphicsLayer> addShpLayer(LayerDef layerDef,
     string shpFile, int start = 0, int maxFeatures = 0) 
 {
     return null;
 }