ArcObjects Library Reference

Load Force Element Layer Snippet

Loads a FeatureClass as a MOLE Force Element Layer into the current IBasicMap (Map, Globe, or Scene).

[C#]

///<summary>Loads a FeatureClass as a MOLE Force Element Layer into the current IBasicMap (Map, Globe, or Scene).</summary>
///  
///<param name="featureClass">An IFeatureClass interface to load.</param>
///<param name="basicMap">An IBasicMap interface that is a Map, Scene, or Globe as IBasicMap.</param>
///<param name="layerName">A System.String that is the name to assign to the layer. Example: "Cities"</param>
///<param name="size">A System.Double that is the size of graphics in the layer (in map units). Example: 0.5</param>
///<param name="sizeIsRatio">A System.Boolean setting the SizeIsRatio property. Example: false</param>
///   
///<returns>An ILayer interface.</returns>
///   
///<remarks>
///1. Obtain a reference to the current IBasicMap.  An IBasicMap is used because it is common between
///a Map, Globe, and Scene (and their corresponding Engine Controls)
///For example in a MapControl, IBasicMap bm = this.m_mapControl.Map as IBasicMap;
///2. Load a Feature Class 
///3. Call this method to load the feature class as a MOLE Force Element layer
///</remarks>
public ESRI.ArcGIS.Carto.ILayer LoadForceElementLayer(ESRI.ArcGIS.Geodatabase.IFeatureClass featureClass, ESRI.ArcGIS.Carto.IBasicMap basicMap, System.String layerName, System.Double size, System.Boolean sizeIsRatio)
{
  if ((featureClass == null) || (basicMap == null))
  {
    System.Diagnostics.Trace.WriteLine("Invalid parameter, aborting");
    return null;
  }

  ESRI.ArcGIS.Carto.IGeoFeatureLayer geoFeatureLayer = new ESRI.ArcGIS.Carto.FeatureLayer() as ESRI.ArcGIS.Carto.IGeoFeatureLayer; // Dynamic Cast
  geoFeatureLayer.FeatureClass = featureClass;

  //Create a MOLE layer and attach the feature layer to it
  ESRI.ArcGIS.DefenseSolutions.ICachedGraphicFeatureLayer cachedGraphicFeatureLayer = new ESRI.ArcGIS.DefenseSolutions.ForceElementLayerClass() as ESRI.ArcGIS.DefenseSolutions.ICachedGraphicFeatureLayer;
  cachedGraphicFeatureLayer.FeatureLayer = geoFeatureLayer;

  //Set the size for symbols in the layer 
  ESRI.ArcGIS.DefenseSolutions.IForceElementLayer forceElementLayer = cachedGraphicFeatureLayer as ESRI.ArcGIS.DefenseSolutions.IForceElementLayer; // Dynamic Cast
  forceElementLayer.Size = size;

  forceElementLayer.SizeIsRatio = sizeIsRatio;

  ESRI.ArcGIS.Carto.ILayer layer = cachedGraphicFeatureLayer as ESRI.ArcGIS.Carto.ILayer; // Dynamic Cast
  layer.Name = layerName;

  basicMap.AddLayer(layer);

  return layer;
}
[Visual Basic .NET]

'''<summary>Loads a FeatureClass as a MOLE Force Element Layer into the current IBasicMap (Map, Globe, or Scene).</summary>
'''  
'''<param name="featureClass">An IFeatureClass interface to load.</param>
'''<param name="basicMap">An IBasicMap interface that is a Map, Scene, or Globe as IBasicMap.</param>
'''<param name="layerName">A System.String that is the name to assign to the layer. Example: "Cities"</param>
'''<param name="size">A System.Double that is the size of graphics in the layer (in map units). Example: 0.5</param>
'''<param name="sizeIsRatio">A System.Boolean setting the SizeIsRatio property. Example: false</param>
'''   
'''<returns>An ILayer interface.</returns>
'''   
'''<remarks>
'''1. Obtain a reference to the current IBasicMap.  An IBasicMap is used because it is common between
'''a Map, Globe, and Scene (and their corresponding Engine Controls)
'''For example in a MapControl, IBasicMap bm = this.m_mapControl.Map as IBasicMap;
'''2. Load a Feature Class 
'''3. Call this method to load the feature class as a MOLE Force Element layer
'''</remarks>
Public Function LoadForceElementLayer(ByVal featureClass As ESRI.ArcGIS.Geodatabase.IFeatureClass, ByVal basicMap As ESRI.ArcGIS.Carto.IBasicMap, ByVal layerName As System.String, ByVal size As System.Double, ByVal sizeIsRatio As System.Boolean) As ESRI.ArcGIS.Carto.ILayer

  If (featureClass Is Nothing) OrElse (basicMap Is Nothing) Then
    System.Diagnostics.Trace.WriteLine("Invalid parameter, aborting")
    Return Nothing
  End If

  Dim geoFeatureLayer As ESRI.ArcGIS.Carto.IGeoFeatureLayer = New ESRI.ArcGIS.Carto.FeatureLayerClass
  geoFeatureLayer.FeatureClass = featureClass

  ' Create a MOLE layer and attach the feature layer to it
  Dim cachedGraphicFeatureLayer As ESRI.ArcGIS.DefenseSolutions.ICachedGraphicFeatureLayer = New ESRI.ArcGIS.DefenseSolutions.ForceElementLayerClass
  cachedGraphicFeatureLayer.FeatureLayer = geoFeatureLayer

  ' Set the size for symbols in the layer
  Dim forceElementLayer As ESRI.ArcGIS.DefenseSolutions.IForceElementLayer = CType(cachedGraphicFeatureLayer, ESRI.ArcGIS.DefenseSolutions.IForceElementLayer) ' Explicit Cast
  forceElementLayer.Size = size
  forceElementLayer.SizeIsRatio = sizeIsRatio

  Dim layer As ESRI.ArcGIS.Carto.ILayer = CType(cachedGraphicFeatureLayer, ESRI.ArcGIS.Carto.ILayer) ' Explicit Cast
  layer.Name = layerName
  basicMap.AddLayer(layer)

  Return layer

End Function


Additional Requirements
  • The code in this document requires the following References added to the Visual Studio project:
  • ESRI.ArcGIS.Carto
  • ESRI.ArcGIS.DefenseSolutions
  • ESRI.ArcGIS.Geodatabase
  • ESRI.ArcGIS.System