ThinkGeo.com    |     Documentation    |     Premium Support

Load shapefile (.shp) and overlay on WorldMapKit

I have a Desktop app with WorldMapKit and MapSuite 6.0.  I'm adding a feature to allow the user to drag-and-drop any .shp file onto a map to be displayed (like you can in Map Suite Explorer).  Starting simple right now to just get the shapefile to display on the map. The code below runs but I can't see the shapefile displayed.  What am I doing wrong?



 



Dim shapefileStaticOverlay As New LayerOverlay

Map1.Overlays.Add(


"ShapeFilesOverlay", shapefileStaticOverlay)

 


 


Private Sub loadShapeFile(ByVal filename As String)'Grab our shapefiles layer overlay:

 


 


 


Dim shapefilesLayerOverlay As LayerOverlay = DirectCast(Map1.Overlays("ShapeFilesOverlay"), LayerOverlay)Dim newShapeFileLayer As New ShapeFileFeatureLayer(filename)'make sure there is an index file built else we'll get and error loading

 


newShapeFileLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel =


newShapeFileLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle =


shapefilesLayerOverlay.Layers.Add(


 


ShapeFileFeatureLayer.BuildIndexFile(filename, BuildIndexMode.DoNotRebuild)ApplyUntilZoomLevel.Level20AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, GeoColor.SimpleColors.Green))"shapefileKeyname", newShapeFileLayer)Map1.Refresh End Sub

 




Hello Michael, 
  
 Thanks for your post, sorry looks like there is a format problem about your code, so it looks like a little chaos, If I miss something, please let me know. 
  
 First I didn’t see the CurrentExtent, without it, map can not location the right position and show the feature. 
  
 Second, because I don’t know which shape file you are using, so this is just some guess, have you test this shape file before? I mean just show the shape file follow the HowDoISamples then check if the style you are using is right, some times the shape file contain a lot of lineshape, but you are setting the style as AreaShape, that won’t show the line. 
  
 Let me know if you have queries. 
  
 Regards, 
  
 Gary

Thanks Gary, sorry about the format issues with the code!  I do know the shapefile sample I’m using works - it loads right up in Map Suite Explorer and it worked in my Map Suite 2.0 version of the app.  This shape file sample has points of fire hydrants that just show up as dots.  So I think you’ve hit on my problem - this line: 
  
 newShapeFileLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, GeoColor.SimpleColors.Green)) 
  
 I copied that line from a sample - but I need something generic that will let any shapefile (dots, lines, area shapes, etc) be viewed in my World Map Kit/MapSuite 6.0 application.  Is there a good sample somewhere on how to do that?  I’m viewing in the correct area, but would also like to let my user zoom to the extent of loaded shapefile if you have a code snippet for that too. 
  
 Thanks! 
  
 Mike

Thanks Gary, sorry about the format issues with the code!  I do know the shapefile sample I’m using works - it loads right up in Map Suite Explorer and it worked in my Map Suite 2.0 version of the app.  This shape file sample has points of fire hydrants that just show up as dots.  So I think you’ve hit on my problem - this line: 
  
 newShapeFileLayer.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.CreateSimpleAreaStyle(GeoColor.SimpleColors.Transparent, GeoColor.FromArgb(100, GeoColor.SimpleColors.Green)) 
  
 I copied that line from a sample - but I need something generic that will let any shapefile (dots, lines, area shapes, etc) be viewed in my World Map Kit/MapSuite 6.0 application.  Is there a good sample somewhere on how to do that?  I’m viewing in the correct area, but would also like to let my user zoom to the extent of loaded shapefile if you have a code snippet for that too. 
  
 Thanks! 
  
 Mike

 



 



 



 Hello Michael,


Please refer the code below:



            ShapeFileFeatureLayer worldLayer = new ShapeFileFeatureLayer(@"..\..\SampleData\Data\Countries02.shp");
            //according to set the different type of styles to show all the kind of features.
            worldLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.CreateSimpleLineStyle(GeoColor.SimpleColors.Orange, 10, true);
            worldLayer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.CreateSimpleLineStyle(GeoColor.SimpleColors.Yellow, 10, true);
            worldLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.Capital1;
            worldLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            worldLayer.Open();
            // zoom to the extent of loaded shapefile
            winformsMap1.CurrentExtent = worldLayer.GetBoundingBox();
            worldLayer.Close();

 


Regards,


Gary



Thanks Gary, that did the trick to get the shapefile to display.  I’ll look at modifying the display options, etc from here.  Thanks again for the help.

Hello Michael, 
  
 You are welcome, please feel free to let us know your problems. 
  
 Regards, 
  
 Gary