ThinkGeo.com    |     Documentation    |     Premium Support

Display the full size of the shapefile

Hi all,


   I load my shapefiles , but it is displaying as the world coordinate, and the map is coming very small.


How do i display this part only and not the full world map.


 


 public void LoadMap()

{

// Set the Map Unit. The reason for setting it to DecimalDegrees is that is what the shapefile’s unit of measure is inherently in.

winformsMap1.MapUnit = GeographyUnit.DecimalDegree;



// We create a new Layer and pass the path to a Shapefile into its constructor. 

ShapeFileFeatureLayer indianLayer = new ShapeFileFeatureLayer(@"C:\IND_adm\IND_adm3.shp") { RequireIndex = false };



// Set the worldLayer with a preset Style, as AreaStyles.Country1 has YellowGreen background and black border, our worldLayer will have the same render style.  

indianLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Country1;



// This setting will apply from ZoonLevel01 to ZoomLevel20, that means we can see the world the same style with ZoomLevel01 all the time no matter how far we zoom out/in. 

indianLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;



// Create a new Layer Overlay to hold the layer we just created

LayerOverlay layerOverlay = new LayerOverlay();



// Add the shapefile layer to the layer overlay

layerOverlay.Layers.Add(indianLayer);



// We need to add the layer overlay to Map.

winformsMap1.Overlays.Add(layerOverlay);



// Set a proper extent for the Map.  

//  winformsMap1.CurrentExtent = new RectangleShape()



// We now need to call the Refresh() method of the Map control so that the Map can redraw based on the data that has been provided.

// winformsMap1.Refresh();

}


 

 



Call GetBoundingBox(), which returns a rectangle shape you can then assign to CurrentExtent.

I am getting this error {"The Layer must be opened before you can perform this method."}  
  
// We need to add the layer overlay to Map.
        winformsMap1.Overlays.Add(layerOverlay);

        //getting the rectangle
        RectangleShape rect = indianLayer.GetBoundingBox();
 
        // Set a proper extent for the Map.  
        winformsMap1.CurrentExtent = rect;
 
       // We now need to call the Refresh() method of the Map control so that the Map can redraw based on the data that has been provided.
       winformsMap1.Refresh();


Vandal,  
  
 You need call a indianLayer.Open() before you call  
 winformsMap1.CurrentExtent = indianLayer.GetBoundingBox();

Thank you , 
 I also made it working by using 
    
   winformsMap1.CurrentExtent = new RectangleShape(new PointShape(80,26),new PointShape(95,15));

Glad to hear it is working for you! :)