6 votos

Mostrar la escala del mapa (como 1:20.000) junto a la ScaleBar

En mi PageLayoutControl añado una ScaleBar. Además, quiero mostrar la escala/relación del mapa (por ejemplo, "1:20.000") al lado, pero no he encontrado la manera de conseguirlo con la ScaleBar. ¿Me estoy perdiendo algo o hay otra forma de hacerlo?

Así es como añado la ScaleBar:

  IEnvelope envelope = new EnvelopeClass();
  envelope.PutCoords(5, 0.1, 12.4, 1); // Specify the location and size of the scalebar
  IUID uid = new UIDClass();
  uid.Value = "esriCarto.ScaleLine";

  // Create a Surround. Set the geometry of the MapSurroundFrame to give it a location
  // Activate it and add it to the PageLayout's graphics container
  IGraphicsContainer graphicsContainer = pageLayout as IGraphicsContainer;
  IActiveView activeView = pageLayout as IActiveView;
  IFrameElement frameElement = graphicsContainer.FindFrame(map);
  IMapFrame mapFrame = frameElement as IMapFrame;
  IMapSurroundFrame mapSurroundFrame = mapFrame.CreateSurroundFrame(uid as UID, null);
  IElement element = mapSurroundFrame as IElement;
  element.Geometry = envelope;
  element.Activate(activeView.ScreenDisplay);
  graphicsContainer.AddElement(element, 0);
  IMapSurround mapSurround = mapSurroundFrame.MapSurround;

  IScaleBar markerScaleBar = (IScaleBar)mapSurround;
  markerScaleBar.LabelPosition = esriVertPosEnum.esriBelow;
  markerScaleBar.UseMapSettings();

0 votos

No estoy seguro de que esta sea la respuesta, pero hay alguna documentación de Java sobre Map Surrounds que puede ayudar en resources.esri.com/help/9.3/arcgisengine/java/engineexamples/

0 votos

@PolyGeo: Gracias, eso me indicó la dirección correcta. Ver mi respuesta.

1voto

David Brossard Puntos 379

EscalaTexto es el camino a seguir. El enlace de PolyGeo me indicó la dirección correcta. Gracias.

Utilizo el mismo código que el anterior, aparte de establecer un ScaleText en lugar de un ScaleLine (línea 4)

uid.Value = "esriCarto.ScaleText";

y la configuración de diferentes opciones (último párrafo):

IScaleText2 markerScaleText = (IScaleText2)mapSurround;
markerScaleText.Separator = ":";
markerScaleText.Style = esriScaleTextStyleEnum.esriScaleTextAbsolute;

1voto

UnkwnTech Puntos 21942

Como mencioné en mi comentario, la información clave que apuntó a gumo en la dirección correcta se puede encontrar en el Añadir mapa a los alrededores recurso de ArcGIS Engine:

Este ejemplo demuestra el uso del SymbologyControl para mostrar el norte flecha del norte, barra de escala y símbolos de texto de escala, que son utilizados por comandos personalizados cuando se añaden objetos MapSurround al GraphicsContainer de El ejemplo utiliza el SymbologyControl junto con el PageLayoutControl con el PageLayoutControl, TOCControl, ToolbarControl, y los comandos comandos de control.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X