internal string AddTextToMap(string text, IGeometry geom, IColor color, bool IsTempGraphic = false, int size = 12)
{
if (geom == null || ArcMap.Document == null || ArcMap.Document.FocusMap == null)
return string.Empty;
IElement element = null;
geom.Project(ArcMap.Document.FocusMap.SpatialReference);
if (geom.GeometryType == esriGeometryType.esriGeometryPoint)
{
var te = new TextElementClass() as ITextElement;
te.Text = text;
var ts = new TextSymbolClass();
ts.Size = size;
ts.VerticalAlignment = esriTextVerticalAlignment.esriTVACenter;
ts.HorizontalAlignment = esriTextHorizontalAlignment.esriTHACenter;
te.Symbol = ts;
element = te as IElement;
}
if (element == null)
return string.Empty;
element.Geometry = geom;
var mxdoc = ArcMap.Application.Document as IMxDocument;
var av = mxdoc.FocusMap as IActiveView;
var gc = av as IGraphicsContainer;
// store guid
var eprop = element as IElementProperties;
eprop.Name = Guid.NewGuid().ToString();
if (IsTempGraphic)
TempGraphicsList.Add(eprop.Name);
else
MapGraphicsList.Add(eprop.Name);
gc.AddElement(element, 0);
av.PartialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
RaisePropertyChanged(() => HasMapGraphics);
return eprop.Name;
}