ThinkGeo.com    |     Documentation    |     Premium Support

ScaleBarPrinterLayer not drawing

I am using the 5.5.0.87 Daily build of the WPF Mapsuite. I am having trouble getting the ScaleBarPrinterLayer to actually appear on my map. I can get the ScaleLinePrinterLayer to show up, but I'd really like to have the customization of the ScaleBar. Below is the code I use to instantiate this layer (you can see I've tried different color options):


 



ScaleBarPrinterLayer scaleBarPrinterLayer = new ScaleBarPrinterLayer(mapPrinterLayer);
scaleBarPrinterLayer.DragMode = PrinterDragMode.Dragable;
scaleBarPrinterLayer.UnitFamily = UnitSystem.Imperial;
scaleBarPrinterLayer.MapUnit = gisMap.MapUnit;
scaleBarPrinterLayer.TextColor = new GeoColor( 255, GeoColor.SimpleColors.BrightRed );
scaleBarPrinterLayer.BarBrush = new GeoSolidBrush();//new GeoColor( 255, GeoColor.SimpleColors.BrightRed ) );
            
RectangleShape pageBoundingbox = GetPageBoundingBox(PrintingUnit.Inch);
scaleBarPrinterLayer.SetPosition( 1.25, .25, pageBoundingbox.GetCenterPoint().X, pageBoundingbox.GetCenterPoint().Y, PrintingUnit.Inch );
printerOverlay.PrinterLayers.Add("ScaleBarLayer", scaleBarPrinterLayer);

 


And this is the result, after I move the map out of the way. The ScaleBar is definitely there, just not drawing itself:


 




Kevin,


 I am afraid the ScaleBarPrinterLayer has not been implemented yet, only the ScaleLinePrinterLayer. I have a meeting with the Development Team this afternoon.. I will inquire with them when this feature is expected to be added and I will let you know. Thank you.



Hello Kevin,


Sorry for long time waiting, the ScaleBarPrinterLayer implemented and works well. please try to add a base map first, then the ScaleBar will shows on map just like ScaleLine.


For test that, we can paste your code into AddScaleLineLayer function of LargeScaleMapPrinting, and make that works.


Test code:



private void AddScaleLineLayer() 



PrinterInteractiveOverlay printerInteractiveOverlay = (PrinterInteractiveOverlay)Map1.InteractiveOverlays["PrintPreviewOverlay"]; 

 

MapPrinterLayer mapPrinterLayer = (MapPrinterLayer)printerInteractiveOverlay.PrinterLayers["MapLayer"]; 

 

ScaleBarPrinterLayer scaleBarPrinterLayer = new ScaleBarPrinterLayer(mapPrinterLayer); 

scaleBarPrinterLayer.DragMode = PrinterDragMode.Dragable; 

scaleBarPrinterLayer.UnitFamily = UnitSystem.Imperial; 

scaleBarPrinterLayer.MapUnit = GeographyUnit.Feet; 

scaleBarPrinterLayer.TextColor = new GeoColor(255, GeoColor.SimpleColors.BrightRed); 

scaleBarPrinterLayer.BarBrush = new GeoSolidBrush(); 

 

RectangleShape pageBoundingbox = GetPageBoundingBox(PrintingUnit.Inch); 

scaleBarPrinterLayer.SetPosition(1.25, .25, pageBoundingbox.GetCenterPoint().X, pageBoundingbox.GetCenterPoint().Y, PrintingUnit.Inch);  

printerInteractiveOverlay.PrinterLayers.Add("ScaleBarLayer", scaleBarPrinterLayer); 




Regards,


Gary