com.esri.arcgis.display
Interface IDynamicMapEvents

All Superinterfaces:
EventListener, Serializable
All Known Implementing Classes:
ControlsMapRoamTool, IDynamicMapEventsAdapter

public interface IDynamicMapEvents
extends EventListener, Serializable

Provides access to events that occur when the state of the dynamic display changes.

Remarks

The Dynamic Map is an active Display, therefore the dynamic Map will get redrawn in events like - dirty dynamic layer, visible bounds change, refresh method call, new tile loaded, etc. In any of these cases, the BeforeDynamicDraw and AfterDynamicDraw events will get fired after all of the Layers (including Graphic Layers) will get drawn.

The difference between the BeforeDynamicDraw\AfterDynamicDraw and the DynamicMapStarted\DynamicMapFinished events, is that the BeforeDynamicDraw\AfterDynamicDraw Events will get fired only when the Display (Dynamic Map) needs to be redrawn, while the DynamicMapStarted\DynamicMapFinished events will get fired on every Dynamic Map heart beat (while the Dynamic Map is Enabled), even when the display is not redrawn.

The BeforeDynamicDraw\AfterDynamicDraw events are getting fired with two different phases (enum esriDynamicMapDrawPhase). Each phase has a different meaning and usage:

  1. esriDMDPDynamicLayers This is getting fired on each dynamic cycle that the Dynamic Map re-renders the scene. The event is fired just before the first layer is rendered, and AfterDynamicDraw event is fired just after the last layer (including any Graphic Layer) is rendered.
    In this context, there is an active OpenGL Rendering context (with a preset rendering volume, viewport, etc).
    Use this context to plug-in any custom dynamic drawings with the DynamicDisplay API as well as with the OpenGL API. This context can be useful in order to draw dynamic elements behind or on top of the Layers and Graphics, which do not need to be associated with a layer.

  2. esriDMDPLayers When the Dynamic Map is sensing that it needs to fetch tiles in order to be able to render the scene, the BeforeDynamicDraw will get fired. When the last missing tile is available and rendered the AfterDynamicDraw event will get fired.
    Note: It is not valid to use the DynamicDisplay API, nor the OpenGL API in this context, since the OpenGL Rendering Context is not fully setup.
    Use this context if you need to monitor when the Dynamic Map is still in a process of fetching tiles for rendering the display.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.


Method Summary
 void afterDynamicDraw(IDynamicMapEventsAfterDynamicDrawEvent theEvent)
          Fired after the specified phase is drawn.
 void beforeDynamicDraw(IDynamicMapEventsBeforeDynamicDrawEvent theEvent)
          Fired before the specified phase is drawn.
 void dynamicMapFinished(IDynamicMapEventsDynamicMapFinishedEvent theEvent)
          Fired when the dynamic map finishes.
 void dynamicMapStarted(IDynamicMapEventsDynamicMapStartedEvent theEvent)
          Fired when the dynamic map starts.
 

Method Detail

dynamicMapStarted

void dynamicMapStarted(IDynamicMapEventsDynamicMapStartedEvent theEvent)
                       throws IOException,
                              AutomationException
Fired when the dynamic map starts.

Description

Fired each time the dynamic map cycle starts, if the Dynamic Map is enabled.

This event is tied to the internal heart beat of the dynamic map and will get fired on every dynamic map heart beat, even if the dynamic map is not being redrawn.

Remarks

The dynamic map heart beat interval is set by the IDynamicMap.DynamicDrawRate property.

This event is useful when a timer mechanism is needed. This event synchronizes with the dynamic map heart beatt, therefore it can be used to implement a navigation mode, by changing the visible bounds and calling the refresh method.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

dynamicMapFinished

void dynamicMapFinished(IDynamicMapEventsDynamicMapFinishedEvent theEvent)
                        throws IOException,
                               AutomationException
Fired when the dynamic map finishes.

Description

Fired each time the dynamic map cycle ends, if the Dynamic Map is enabled.

This event is tied to the internal heart beat of the dynamic map and will get fired on every dynamic map heart beat, even if the dynamic map is not being redrawn.

Remarks

The dynamic map heart beat interval is set by the IDynamicMap.DynamicDrawRate property.

This event is useful when a timer mechanism is needed. This event synchronizes with the dynamic map heart beat.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

beforeDynamicDraw

void beforeDynamicDraw(IDynamicMapEventsBeforeDynamicDrawEvent theEvent)
                       throws IOException,
                              AutomationException
Fired before the specified phase is drawn.

Remarks

The BeforeDynamicDraw event is getting fired with two different phases (enum esriDynamicMapDrawPhase). Each phase has a different meaning and usage:

  1. esriDMDPDynamicLayers This is getting fired on each dynamic cycle that the Dynamic Map re-renders the scene. The BeforeDynamicDraw event is fired just before the first layer is rendered, and AfterDynamicDraw event is fired just after the last layer (including any Graphic Layer) is rendered.
    In this context, there is an active OpenGL Rendering context (with a preset rendering volume, viewport, etc).
    Use this context to plug-in any custom dynamic drawings with the DynamicDisplay API as well as with the OpenGL API. This context can be useful in order to draw dynamic elements behind or on top of the Layers and Graphics, which do not need to be associated with a layer.
  2. esriDMDPLayers When the Dynamic Map is sensing that it needs to fetch tiles in order to be able to render the scene, the BeforeDynamicDraw will get fired. When the last missing tile will be available and rendered the AfterDynamicDraw event will get fired.
    Note that it is not valid to use the DynamicDisplay API, nor the OpenGL API in this context, since the OpenGL Rendering Context is not fully setup.
    Use this context if you need to monitor when the Dynamic Map is still in a process of fetching tiles for rendering the display.

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.

afterDynamicDraw

void afterDynamicDraw(IDynamicMapEventsAfterDynamicDrawEvent theEvent)
                      throws IOException,
                             AutomationException
Fired after the specified phase is drawn.

Remarks

The AfterDynamicDraw event is getting fired with two different phases (enum esriDynamicMapDrawPhase). Each phase has a different meaning and usage:

Product Availability

Available with ArcGIS Engine, ArcGIS Desktop, and ArcGIS Server.

Parameters:
theEvent - The event
Throws:
IOException - If there are interop problems.
AutomationException - If the ArcObject component throws an exception.