ThinkGeo.com    |     Documentation    |     Premium Support

Overlay name with spaces in name issue

Can anyone tell me why an overlay name with "Truck 40 - Travis - Edge Line2" as the name will not draw correctly but if I change it to "Truck 40 - Travis - EdgeLine2" it draws just fine?


I am pulling those names from a database and combining the Truck, driver, and Line to put as the overlay name. If I don't do a replace of " " (space) with nothing on the Line part of it the map won't draw that overlay.


Thanks,


  - Josh



Hi Josh,  
  
 Thanks for your question! 
  
 Can you provide a code sample demonstrating how you are setting the ID value of the Overlay and how you are adding the Overlay to the Map? 
  
 There must be some mismatch in the ID values. A value in quotes should allow for any number of spaces and the position of the space should be able to exist in any location.

 Basically each asset can have up to 8 different layers and can be named different. The layers are pulled from a database column.


addLayer(asset, mapControl, layerName, GeoColor.SimpleColors.Blue); is called for each asset layer


         public static void addLayer(Asset asset, Map mapControl, String layerName, GeoColor linePenColor)


        {


            String name = ConvertToLayerName(asset.AssetDescription, layerName);


            // Define the line pen.


            GeoPen linePen = new GeoPen(linePenColor, 4);


            linePen.SetLineCap(DrawingLineCap.Round, DrawingLineCap.Round, GeoDashCap.Round);


            // Define the outer pen


            GeoPen outerPen = new GeoPen(GeoColor.StandardColors.Black, 6);


            outerPen.SetLineCap(DrawingLineCap.Round, DrawingLineCap.Round, GeoDashCap.Round);


            // Define the center pen.


            GeoPen centerPen = new GeoPen(new GeoHatchBrush(GeoHatchStyle.Percent25, GeoColor.StandardColors.Black));


            centerPen.SetLineCap(DrawingLineCap.Round, DrawingLineCap.Round, GeoDashCap.Round);


            InMemoryFeatureLayer layer = new InMemoryFeatureLayer();


            layer.Name = name;


            layer.ZoomLevelSet.ZoomLevel01.IsActive = true;


            layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;


            layer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = new LineStyle(outerPen, linePen, centerPen);


            LayerOverlay vehicleOverlay = new LayerOverlay(name);


            vehicleOverlay.IsBaseOverlay = false;


            vehicleOverlay.IsVisibleInOverlaySwitcher = true;


            if (!mapControl.CustomOverlays.Contains(vehicleOverlay.Name))


            {


                mapControl.CustomOverlays.Add(vehicleOverlay);


            }


            if (!vehicleOverlay.Layers.Contains(layer.Name))


            {


                vehicleOverlay.Layers.Add(layer.Name, layer);


            }


        }


 



        public static String ConvertToLayerName(String assetDescription, String layerName)


        {


            String name = assetDescription + " - " + layerName;


            return name;


        }


 


Once the layers are added all I do is add line segements to the internal features.


Nothing comes up on the map with the space in the layerName like stated in previous post.



Josh,


I wrote a sample but cannot recreate your scenario, pleae check the code and picture attached.


Also can you provide a full sample which could recreate your problem? It may helps to solve your problem quickly.


Thanks,


Johnny



SampleCodeAndPicture.zip (178 KB)

 Actually my bad I just found out that it is comparing another column from a different table to layerName and that other column wasn't updated when the source code was.


Again my bad.


 


You can delete this thread if you want as to not confuse others.


 


 - Josh



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