ThinkGeo.com    |     Documentation    |     Premium Support

Can't get point text positioing to work

I can;t get the label fro a point (e.g. town) to be positioned such that it doesn't overlap the point marker.


wrigin code such as



placesLayer.ZoomLevelSet.ZoomLevel14.DefaultTextStyle.XOffsetInPixel = 20;


doesn't appear to do anything.


What do I do?


cheers


Matt




Matthew, 
  
 The textStyle.OffsetInPixel works fine in my test, can you let me know more about your issue, can you send me some code? 
  
 By the way, here is how to set the offset of the markers. 
 Map1.MarkerOverlay.ZoomLevelSet.ZoomLevel01.DefaultMarkerStyle.WebImage.TextOffsetX = 25; 
  
 Thanks, 
  
 Ben

Hi,



I'm obviously confused about terminology. What's a MarkerOverlay (got to do with it)?

I was trying to follow the example 'ChangePointLabelPlacement'. Is that wrong.



What I am doing:



1. Adding a ShapeFileFeatureLayer which loads a .shape file which contains towns (and other things)



ShapeFileFeatureLayer placesLayer = new ShapeFileFeatureLayer(MapPath("~/App_Data/Maps/AAGazetteer, GB_point.shp"));

2. Setting zoom levels such that different towns/cities appear at different zoom levels



...

Collection<Style> capital = new Collection<Style>();
capital.Add(PointStyles.Capital1);
capital.Add(new TextStyle("NAME", new GeoFont("Arial", 9), new GeoSolidBrush(GeoColor.StandardColors.Black)));

...

ValueStyle zoom8 = new ValueStyle();
zoom8.ColumnName = "LEVEL";
zoom8.ValueItems.Add(new ValueItem("8", capital));
placesLayer.ZoomLevelSet.ZoomLevel09.CustomStyles.Add(zoom8);
placesLayer.ZoomLevelSet.ZoomLevel09.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
placesLayer.ZoomLevelSet.ZoomLevel09.DefaultTextStyle.XOffsetInPixel = PointLabelXAxisPixelOffset; // a const int of say 25
placesLayer.ZoomLevelSet.ZoomLevel09.DefaultTextStyle.PointPlacement = PointPlacement.CenterRight;


is this right/wrong?

cheers

Matt



Matthew, 
  
 I see. so what you want is to label all the features which has the LEVEL equals to "8", right? You cannot change its Offset by setting DefautTextStyle, because you are using CustomStyles which is not "DefaultTextStyle". You can try this code instead. 
  
 
TextStyle textStyle = new TextStyle("NAME", new GeoFont("Arial", 9), new GeoSolidBrush(GeoColor.StandardColors.Black));
textStyle.XOffsetInPixel = PointLabelXAxisPixelOffset;
textStyle.PointPlacement = PointPlacement.CenterRight;
capital.Add(textStyle);
 
  
 Thanks, 
  
 Ben 


That did the trick. 
 Thankyou 
 Matt

You are welcome, Matt.