Interacting with map surrounds
Map surrounds are specific types of elements that are associated with a map object. A good example of a map surround and its capabilities is the north arrow. North arrows are built as map surrounds so that they can respond to map rotation. When a map is rotated, its north arrow is rotated the same degree.
This example code adds a legend to the page layout. North arrows and legends are types of map surrounds. All map surrounds are held inside a MapSurroundFrame container, an element object, and this frame is related to a MapFrame. This relationship enables, for example, north arrows to automatically rotate when their related map is rotated and it tells the legends the layers and symbology a map has. The second function shows how to access the map surrounds through the MapSurroundFrame.
The following code demonstrates how to add a MapSurroundFrame to a given map and page layout:
[Java]
static void addMapSurround(IPageLayout docPageLayout, IMap docMap, IActiveView
docActiveView)throws Exception{
IGraphicsContainer docGraphicsContainer = (IGraphicsContainer)docPageLayout;
IMapFrame docMapFrame = (IMapFrame)docGraphicsContainer.findFrame(docMap);
UID elementUID = new UID();
// The value determines the type of MapSurroundFrame being added.
elementUID.setValue("esriCarto.Legend");
// The createsurroundframe method takes the UID of the element and an
// optional style.
IMapSurroundFrame docMapSurroundFrame = docMapFrame.createSurroundFrame
(elementUID, null);
docMapSurroundFrame.getMapSurround().setName("Legend");
// Now cast the MapSurroundFrame as an element so it can be inserted
// into the page layout.
IElement docElement = (IElement)docMapSurroundFrame;
IElement mainMapElement = (IElement)docMapFrame;
IEnvelope mainEnv = mainMapElement.getGeometry().getEnvelope();
IEnvelope env = new Envelope();
env.putCoords(mainEnv.getXMax() + 1.5, mainEnv.getYMin() + 1.5, mainEnv.getXMax()
- 1.5, mainEnv.getYMax() - 1.5);
docElement.setGeometry(env);
docElement.activate(docActiveView.getScreenDisplay());
docGraphicsContainer.addElement(docElement, 0);
docActiveView.partialRefresh(esriViewDrawPhase.esriViewGraphics, null, null);
}
The following code example shows how to find and access the MapSurroundFrame:
[Java]
static void reportMapSurrounds(IPageLayout docPageLayout)throws Exception{
//Get the page layout as a graphics container.
IGraphicsContainer graphicsContainer = (IGraphicsContainer)docPageLayout;
graphicsContainer.reset();
IElement docElement = graphicsContainer.next();
//Enumerate through the graphics container, finding all mapSurroundFrames.
while (docElement != null){
if (docElement instanceof IMapSurroundFrame){
IMapSurroundFrame mapSurroundFrame;
mapSurroundFrame = (IMapSurroundFrame)docElement;
//If a surroundframe is found, report the name of the surround and
//the name of the map that it is associated with.
System.out.println("Found mapsurround " +
mapSurroundFrame.getMapSurround().getName() +
" associated with map " + mapSurroundFrame.getMapSurround().getMap()
.getName());
}
docElement = graphicsContainer.next();
}
}
Development licensing | Deployment licensing |
---|---|
ArcView | ArcView |
ArcEditor | ArcEditor |
ArcInfo | ArcInfo |
Engine Developer Kit | Engine Runtime |