private void DoInit() { IFeatureClass fetclass = _class as IFeatureClass; //_featureRenderer switch (fetclass.ShapeType) { case enumShapeType.Point: _featureRender = new SimpleFeatureRenderer(new SimpleMarkerSymbol()); break; case enumShapeType.Polyline: _featureRender = new SimpleFeatureRenderer(new SimpleLineSymbol()); break; case enumShapeType.Polygon: _featureRender = new SimpleFeatureRenderer(new SimpleFillSymbol()); break; default: throw new NotSupportedException("矢量要素层对象暂不支持\"" + fetclass.ShapeType.ToString() + "\"几何类型的数据。"); } if ((_featureRender as BaseFeatureRenderer) != null) { (_featureRender as BaseFeatureRenderer)._name = _name; } string[] fldnames = fetclass.FieldNames; _labelDef = new LabelDef(TryGetKeyField(fldnames, new string[] { "NAME", "名称" }), fldnames); _rotateFieldDef = new RotateFieldDef(TryGetKeyField(fldnames, new string[] { "ANGLE", "角度" }), 0f, fldnames); _featureRender.RotateFieldDef = _rotateFieldDef; _isInited = true; }
private void TryInitByFeatureClass() { if (_class == null) { _featureRender = null; _labelDef = null; _rotateFieldDef = null; } else { if (!(_class.DataSource as IFeatureDataSource).IsReady) { (_class.DataSource as FeatureDataSourceBase).TryInit(); } if ((_class.DataSource as IFeatureDataSource).IsReady) { (_class as FeatureClass).GetArgsFromDataSource(); DoInit(); } } }
public static IFeatureLayer FromXElement(XElement ele) { if (ele == null) { return(null); } string name = ele.Attribute("name").Value; bool visible = bool.Parse(ele.Attribute("visible").Value); bool enableDisplayLevel = true; if (ele.Attribute("enabledisplayLevel") != null) { enableDisplayLevel = bool.Parse(ele.Attribute("enabledisplayLevel").Value); } ScaleRange displayScaleRange = ScaleRange.FromXElement(ele.Element("DisplayScaleRange")); LabelDef labelDef = AgileMap.Core.LabelDef.FromXElement(ele.Element("LabelDef")); IFeatureRenderer renderer = PersistObject.ReflectObjFromXElement(ele.Element("Renderer")) as IFeatureRenderer; RotateFieldDef rotateFieldDef = RotateFieldDef.FromXElement(ele.Element("RotateField")); IFeatureClass fetclass = AgileMap.Core.FeatureClass.FromXElement(ele.Element("FeatureClass")); if (fetclass == null) { return(null); } fetclass.Name = name; IFeatureLayer lyr = new FeatureLayer(name, fetclass, renderer, labelDef); lyr.RotateFieldDef = rotateFieldDef; lyr.DisplayScaleRange = displayScaleRange; lyr.EnabledDisplayLevel = enableDisplayLevel; (lyr as ILayerDrawable).Visible = visible; // if (ele.Attribute("twostepflag") != null) { string twoStepflagstring = ele.Attribute("twostepflag").Value; lyr.IsTwoStepDraw = bool.Parse(twoStepflagstring); } // return(lyr); }
public override object EditValue(ITypeDescriptorContext context, IServiceProvider provider, object value) { try { if (!(value is IFeatureRenderer)) { return(value); } RotateFieldDef rotateFieldDef = (value as IFeatureRenderer).RotateFieldDef; IFeatureRenderEnvironment env = (value as BaseFeatureRenderer)._environment; IFeatureRenderer retRender = null; IWindowsFormsEditorService edSvc = (IWindowsFormsEditorService)provider.GetService(typeof(IWindowsFormsEditorService)); if (edSvc != null) { using (frmFeatureRendererEditor frm = new frmFeatureRendererEditor(context.Instance as IFeatureLayer)) { if (edSvc.ShowDialog(frm) == DialogResult.OK) { retRender = (frm as IFeatureRendererProvider).Renderer; if (retRender == null) { return(value); } retRender.RotateFieldDef = rotateFieldDef; (retRender as BaseFeatureRenderer).SetFeatureLayerEnvironment(env); return(retRender); } else { return(value); } } } return(value); } finally { } }