ThinkGeo.com    |     Documentation    |     Premium Support

Point Placement Affected by Label Length

Hi,


I'm having problems with the placement of labels for my point layers (which come from Shape Files if this is relevant). The distance between the label and the point appears to be related to the length of the label text. The longer the label, the further it is from the point.


I've attached a screenshot illustrating the problem. You can see that the label for "Ryal" is very close to the point, but for "Great Whittington" the label appears much further to the right of the point.



I'm not using any offset values, and have "BestPlacement" and "ForceHorizontalLabelForLine" both set to true.


Any ideas?


Best regards,


Gary



Gary, 


We are unable to recreate the issue. Please see the test code below:



            Feature feature1 = new Feature(25, 25);
            feature1.ColumnValues.Add("LabelColumn", "A");
            
            Feature feature2 = new Feature(25, 75);
            feature2.ColumnValues.Add("LabelColumn", "Abc");

            Feature feature3 = new Feature(75, 75);
            feature3.ColumnValues.Add("LabelColumn", "Absdsfsdffsfsdfsdfasdffasfascde");

            Feature feature4 = new Feature(75, 25);
            feature4.ColumnValues.Add("LabelColumn", "Abcdefg");

            Feature feature5 = new Feature(50, 50);
            feature5.ColumnValues.Add("LabelColumn", "Abcdefghijklm");

            InMemoryFeatureLayer inMemoryLayer = new InMemoryFeatureLayer();
            inMemoryLayer.Open();
            inMemoryLayer.Columns.Add(new FeatureSourceColumn( "LabelColumn","string",20));
            inMemoryLayer.Close();

            inMemoryLayer.InternalFeatures.Add("Feature1", feature1);
            inMemoryLayer.InternalFeatures.Add("Feature2", feature2);
            inMemoryLayer.InternalFeatures.Add("Feature3", feature3);
            inMemoryLayer.InternalFeatures.Add("Feature4", feature4);
            inMemoryLayer.InternalFeatures.Add("Feature5", feature5);

            inMemoryLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle.SymbolPen = new GeoPen(GeoColor.FromArgb(255, GeoColor.StandardColors.Green), 5);
            inMemoryLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.CreateSimpleTextStyle("LabelColumn", "Arial", 18, DrawingFontStyles.Regular, GeoColor.SimpleColors.Black);
            inMemoryLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.BestPlacement = true;
            inMemoryLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.ForceHorizontalLabelForLine = true;
            inMemoryLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            LayerOverlay staticOverlay = new LayerOverlay();
            staticOverlay.Layers.Add("InMemoryFeatureLayer", inMemoryLayer);



 


Thanks,


Johnny





Hi Johnny,


OK, I've isolated where the problem is being introduced, which is when a Halo is applied to the text. If you add the following line into your example code you'll see what I mean.


inMemoryLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.HaloPen = new GeoPen(GeoColor.FromArgb(255, 255, 255, 255), 2);

The variation in distance between label and point just seems to be related to the existence of the halo, i.e. changing the width of the halo pen doesn't have any effect on it.


Best regards,


Gary



You are right. By applying Halo, we can observe that problem. We entered that issue into our issue tracker and Johnny will let you know on the status of this bug fix. Thank you for pointing that out to us.

Hi Gary, 


We have fixed this bug now. Please get the latest DLL Package (version 4.0.55.0 or later) from helpdesk.thinkgeo.com later and try again. If you still have problems please let us know. 


Thanks,


Johnny 



Hi Johnny,


Thanks for this.


Can you tell me whether 4.0.55.0 also contains the fix for the problem I was having with postbacks and hidden maps, described in this post.


I'm currently running 4.0.34.0 and can't change from that until I know the fix has made it into a future release.


Best regards,


Gary



Gary, 
  
 Sorry that i missed that issue in this package. Please don’t get it untill i updated it. 
  
 Thanks for the note. 
  
 Johnny

Gary, 
  
 Another choice is that you just need to replace the MapSuiteCore.dll with the one in latest package.  
  
 Thanks, 
 Johnny