Nelson,
Thanks for your post!
I think we should close the layer before we build the record id for it. Following is the code I tested against and you need to reference the corresponding data for it.
private void Form1_Load(object sender, EventArgs e)
{
winformsMap1.MapUnit = GeographyUnit.DecimalDegree;
winformsMap1.CurrentExtent = new RectangleShape(-126.4, 48.8, -67.0, 19.0);
winformsMap1.BackgroundOverlay.BackgroundBrush = new GeoSolidBrush(GeoColor.GeographicColors.ShallowOcean);
ShapeFileFeatureLayer worldShapeLayer = new ShapeFileFeatureLayer(@"..\..\..\..\..\PostsData\Countries02.shp");
worldShapeLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.County1;
worldShapeLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
ShapeFileFeatureLayer statesLayer = new ShapeFileFeatureLayer(@"..\..\..\..\..\PostsData\USStates.shp");
statesLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.State1;
statesLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle.OutlinePen.LineJoin = DrawingLineJoin.Round;
statesLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
LayerOverlay staticOverlay = new LayerOverlay();
staticOverlay.Layers.Add("WorldShapeLayer", worldShapeLayer);
staticOverlay.Layers.Add("StatesLayer", statesLayer);
winformsMap1.Overlays.Add("LayerOverlay", staticOverlay);
statesLayer.Open();
usBoudningBox = statesLayer.GetBoundingBox();
statesLayer.Close();
winformsMap1.Refresh();
}
private void btnBuildRecId_Click(object sender, EventArgs e)
{
if (majorCitiesShapeLayer != null) { majorCitiesShapeLayer.Close(); }
ShapeFileFeatureLayer.BuildRecordIdColumn(@"..\..\..\..\..\PostsData\MajorCities.shp", "RecId", BuildRecordIdMode.Rebuild);
}
private ShapeFileFeatureLayer majorCitiesShapeLayer;
private void btnAddLayer_Click(object sender, EventArgs e)
{
LayerOverlay layerOverlay = (LayerOverlay)winformsMap1.Overlays["LayerOverlay"];
layerOverlay.Lock.EnterWriteLock();
try
{
majorCitiesShapeLayer = new ShapeFileFeatureLayer(@"..\..\..\..\..\PostsData\MajorCities.shp");
majorCitiesShapeLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.City1;
majorCitiesShapeLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.City1("AREANAME");
majorCitiesShapeLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.BestPlacement = true;
majorCitiesShapeLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
layerOverlay.Layers.Add("majorCitiesShapeLayer", majorCitiesShapeLayer);
}
finally
{
layerOverlay.Lock.ExitWriteLock();
}
winformsMap1.Refresh();
}
Any more questions just let me know.
Thanks.
Yale