ThinkGeo.com    |     Documentation    |     Premium Support

How to delete a FeatureLayer

Hi,


I my application, I have a botton to allow user load a shapefile.


I use the following code to create a ShapeFileFeatureLayer



ShapeFileFeatureLayer wellboreLayer =



new ShapeFileFeatureLayer(m_shapeFileName);"Wellbores";new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(GeoColor.StandardColors.Red), 10);LabelOverlappingRule.AllowOverlapping;ApplyUntilZoomLevel.Level20;new EventHandler<DrawingFeaturesEventArgs>(shapeFileFeatureLayer_DrawingFeatures);false;LayerOverlay layerOverlay = new LayerOverlay();"WellboreFeatureLayer, wellboreLayer);

winformsMap1.Refresh();


 


These code throw exceptions.


System.IndexOutOfRangeException: Index was outside the bounds of the array.

   at ThinkGeo.MapSuite.DesktopEdition.Overlay.Draw(GeoCanvas canvas)

   at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.x03e3d48bcfe7bb6c(IEnumerable`1 xa6f0db4f183189f1)

   at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.xff5b27c00f9678c2(RectangleShape x178b193eec228e6e)

   at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.xe3cee4adb9c72451()

   at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.x9ac8c50f434f4b39(Int32 xb565f4681f05557a)

   at ThinkGeo.MapSuite.DesktopEdition.WinformsMap.Refresh()


What would cause the Index was outside the bounds of the array exception?


In my catch, I want to find the FeatureLayer and delete it.


FeatureLayer  layer =  winformsMap1.FindFeatureLayer("WellboreFeatureLayer");


How to delete this layer?


Thank you.


 


Katherine



wellboreLayer .Name =


wellboreLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle =


wellboreLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.OverlappingRule =


wellboreLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel =


wellboreLayer.DrawingFeatures +=


wellboreLayer.RequireIndex =


 


layerOverlay.Layers.Add(


winformsMap1.Overlays.Add(layerOverlay);



Katherine,



        
  • Thanks for your post.


 
There are two ways to remove the feature layers:
1) Set the target layer as invisible. This way will be convenient when you want to set it back to visible if required.

winformsMap1.FindFeatureLayer("WellboreFeatureLayer").IsVisible = false;

 
2)Remove the layer from the LayerOverlay. When use this method, you have to set the keys for the LayerOverlay and Layer.

((LayerOverlay)(winformsMap1.Overlays["WorldOverlay"])).Layers.Remove("WellboreFeatureLayer");

 
 
About the reason throwing the exception, I think it probably indicts there is some error in your index file. If possible, could you send us your shape files?
 
Thanks.
 
Yale