Доброго времени суток!
Столкнулся со следующей проблемой. Имеется набор шейп-файлов, составляющих слои карты и созданый на их основе mxd. В приложении ArcMap настроил Labels для нужных слоев - все в нем (в ArcMap) отображается как надо. Однако в моем .NET приложении подписи не отображаются.
Пытаюсь заставить их отображаться следующим образом:
IGeoFeatureLayer layer = Map.get_Layer(5) as IGeoFeatureLayer;
if (layer != null)
{
IField field = layer.DisplayFeatureClass.Fields.get_Field( 9 ); // поле которое должно быть отображено как подпись
layer.DisplayField = field.Name;
layer.DisplayAnnotation = true;
}
Подписи, конечно, отображаются, но не те, которые я указал (не из того поля, что прописал), а из поля, которое используется по умолчанию.
Далее пытаюсь другим способом (продолжение кода):
IAnnotateMapProperties annoMapProps = new AnnotateMapPropertiesClass();
IAnnotateLayerProperties annoLayerProps = null;
IElementCollection placed = null, unplaced = null;
layer.AnnotationProperties.QueryItem( 0, out annoLayerProps, out placed, out unplaced );
annoLayerProps.Class = "LINES_polyline";
annoLayerProps.DisplayAnnotation = true;
annoLayerProps.FeatureLayer = layer;
annoLayerProps.Priority = 0;
annoLayerProps.AnnotationMaximumScale = layer.MaximumScale;
annoLayerProps.AnnotationMinimumScale = layer.MinimumScale;
annoMapProps.AnnotateLayerPropertiesCollection.Add( annoLayerProps );
ITrackCancel trackCancel = new TrackCancelClass();
MapCtrl.Map.AnnotationEngine.Label(annoMapProps, Map.Map, trackCancel );
Собственно, эффект тот же.
Что я делаю не так? Есть ли простой способ отобразить лейблы, чтобы все было как настроено в ArcMap?