ThinkGeo.com    |     Documentation    |     Premium Support

What would cause layers to not be displayed?

Hello,


We're still trying to get some basic maps showing in our application. I frequently come up against an issue (caused by me) where layers stop rendering and all that is displayed is a big white box.


Can you give some pointers on what would prevent a layer from being drawn? Just some troubleshooting tips would be great.


As an example, here's the code I'm using right now to add two layers, but neither are being drawn. I've tried to roll it back to basic styles, but I still get the white box.



        For Each layerFile As LayerDataFile In layerFiles
            Dim l = New ShapeFileFeatureLayer(Path.Combine(layerFiles.BasePath, layerFile.Path))
            l.Name = layerFile.Name
            l.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Water1
            'l.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.InternationalBorder1
            l.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20

            'For Each lzl As LayerZoomLevel In layerFile.ZoomLevels
            '    Dim z = GetZoomLevel(l, lzl.FromLevel)
            '    z.DefaultAreaStyle = AreaStyles.Water1
            '    'ApplyLineStyle(z, lzl.LineStyleConfiguration)
            '    'ApplyAreaStyle(z, lzl.AreaStyleConfiguration)
            '    z.ApplyUntilZoomLevel = lzl.ToLevel
            'Next

            Me.StaticOverlay.Layers.Add(layerFile.Name, l)
        Next


 Thanks!


pk



I only see a portion of your code and I don’t have the layers, so we have few clues to determine what could be wrong. But based on my experience with similar problems, I would give you the following pointers: 
  
 - I don’t see in your code where you set the map unit. I remind you that this is very important that the map unit of map matches the map unit your layers are. If for example, your layers are in decimal degrees, the map unit needs to be set to decimal degrees. If your layers are in meter, the map unit needs to be in meter. 
  
 -Make sure that all your layers are in the same projection. If for example, you have one layer in Geodetic WGS84 (Lat/Long) and another one in UTM, the layers are going to be in completely different coocrdinates system and if you add them together as is, it will have some undesired results.  Reprojection operations are necessary and we can help you on that if this is your case. 
  
 -You need to set the Style of the layer according to the type of the layer. If the layer is point based, you need a PointStyle. If the layer is line based, you need a LineStyle. If your layer is polygon based, you need an AreaStyle. I see in your code, that you loop thru your layers but you do not check for the type of the layer to set the appropriate style. 
  
  
  If you don’t know anything about your layers, I would open up in our Map Explorer one layer at a time to view it and see by your self what type of layer it is. You can also build the spatial index for better performance. At the mouse move, you will see the world coordinates and it will give you an idea of what unit it is in. If the values are like -98.6788; 35.7896, then it is in decimal degrees. If the values are much bigger, then the unit is in meter or feet. 
  
  I hope that gives you some clues on how to correct your code so that your layers display correctly.

Thanks for the quick response, Val. I just removed the dynamic layer file code and replaced it with this: 




Me.MapUnit = GeographyUnit.DecimalDegree
Me.Overlays.Add("StaticOverlay", Me.StaticOverlay)

Dim l As New ShapeFileFeatureLayer("c:\_projects\worldmapkit\world\physical\ocean.shp")
l.ZoomLevelSet.ZoomLevel01.DefaultAreaStyle = AreaStyles.Water1
l.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20
Me.StaticOverlay.Layers.Add("Ocean", l)

Me.Refresh()
 



I still just get a blank white control. If I add a ScaleAdornmentLayer, that does display correctly. 



I'll play with the Map Explorer to see if it helps. 



pk



This is strange that the ScaleBarAdornmentLayer makes the layer display correctly. 
 Also, make sure that you have the CurrentExtent of the map set correctly. Let us know if playing with Map Suite Explorer helps.