ThinkGeo.com    |     Documentation    |     Premium Support

Label appearance in InMemoryFeature Layer is not as wanted

Hi,

Can anyone provide a style to display Text that works perfectly? We have some feature and they have labels. What our problem is the labels appear as they like, which is not clear to us. For example, in the image below we are about 50 m scale and only two features’ label are shown and two are not shown.



As we ZOOM OUT different label appears (at 200m scale)



And then at 400m zoom we see all the labels



We want the opposite behaviour. If the Feature Geometry( in this case the rectangle) is smaller then part of the labels are shown or all the labels like now. But they MUST appear if the geometry is bigger or there is more place like the image 1 and 2.

The Text Style that we are using is following: 



TextStyle textStyle = TextStyles.CreateSimpleTextStyle(
                columnName, “Arial”, 8, DrawingFontStyles.Bold, GeoColor.StandardColors.Black, 0, 0);
            textStyle.HaloPen = new GeoPen(GeoColor.StandardColors.White, 2);
            textStyle.OverlappingRule = LabelOverlappingRule.NoOverlapping;
            textStyle.SplineType = SplineType.ForceSplining;
            textStyle.DuplicateRule = LabelDuplicateRule.UnlimitedDuplicateLabels;
            textStyle.TextLineSegmentRatio = 9999999;
            textStyle.FittingLineInScreen = true;
            textStyle.SuppressPartialLabels = true;
            textStyle.BestPlacement = true;




Can any one please help? PS: Anyone from thinkgeo: we have a WPF licence, but unfortunately no support ticket so we are posing in this forum!
Regards,
Murshed

Hi Murshed, 
  
 I want to make sure your scenario first. 
  
 It looks you have two shapefiles (or the polygon is in TrackOverlay?), one of it contains a polygon, and the other one contains 4 lines(or 4 points?). The label for the 4 shapes sometimes show but you need them shows always. 
  
 I think you have set most of the properties for textStyle so please set some other properties like GridSize and SuppressPartialLabels etc. 
  
 If it still don’t works well, please sent use your sample, so we can help you debug that. 
  
 Regards, 
  
 Don

Hi Don,

Thank you for your reply!! We have an inMemoryFeatureLayer where we add geometries. There is a Polygon and four Points. Points get the text style that I mentioned at the end of my first post, Which renders the texts that you see in the image. The small green icons are Image style for those four points. As you see from the Style I already tried with "SuppressPartialLabels" and set it true. What does the "GridSize" do and what should I set it to?



Unfortunately, since it is a live product that we are working, due to confidentiality reasons we cannot share the project for debug!!



Looking forward to your reply! Kind Regards,

Murshed

Hi Murshed, 
  
 I meant if you build a simple sample and only add related code which can reproduce your problem should be helpful, but not need your other code. 
  
 Today I build a really simple sample, I tested by it and haven’t reproduced that, the label shows correct.  
  
 Please try my test code as below: 
  
  
private void WpfMap_Loaded(object sender, RoutedEventArgs e)
        {
            Map1.MapUnit = GeographyUnit.DecimalDegree;

            ZoomLevelSet set = new ZoomLevelSet();
            set = new ExtendedZoomLevelSet();

            Map1.ZoomLevelSet = set;
            Map1.MinimumScale = set.CustomZoomLevels[set.CustomZoomLevels.Count - 1].Scale;

            Collection<Vertex> vs = new Collection<Vertex>();
            vs.Add(new Vertex(0, 0));
            vs.Add(new Vertex(10, 10));
            vs.Add(new Vertex(0, 20));
            vs.Add(new Vertex(-10, 10));
            vs.Add(new Vertex(0, 0));

            LineShape line = new LineShape(vs);
            string columnName = “test”;

            TextStyle textStyle = TextStyles.CreateSimpleTextStyle(
                columnName, “Arial”, 8, DrawingFontStyles.Bold, GeoColor.StandardColors.Black, 0, 0);
            textStyle.HaloPen = new GeoPen(GeoColor.StandardColors.White, 2);
            textStyle.OverlappingRule = LabelOverlappingRule.NoOverlapping;
            textStyle.SplineType = SplineType.ForceSplining;
            textStyle.DuplicateRule = LabelDuplicateRule.UnlimitedDuplicateLabels;
            textStyle.TextLineSegmentRatio = 9999999;
            textStyle.FittingLineInScreen = true;
            textStyle.SuppressPartialLabels = true;
            textStyle.BestPlacement = true;


            InMemoryFeatureLayer layer = new InMemoryFeatureLayer();
            layer.Open();

            layer.Columns.Add(new FeatureSourceColumn(columnName));

            layer.ZoomLevelSet.ZoomLevel01.DefaultLineStyle = LineStyles.LocalRoad4;
            layer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.City7;
            layer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = textStyle;
            layer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

            layer.InternalFeatures.Add(new Feature(line));

            Feature f1 = new Feature(new PointShape(5, 5));
            f1.ColumnValues.Add(columnName, “R1”);
            Feature f2 = new Feature(new PointShape(5, 15));
            f2.ColumnValues.Add(columnName, “R2”);
            Feature f3 = new Feature(new PointShape(-5, 15));
            f3.ColumnValues.Add(columnName, “R3”);
            Feature f4 = new Feature(new PointShape(-5, 5));
            f4.ColumnValues.Add(columnName, “R4”);

            layer.InternalFeatures.Add(f1);
            layer.InternalFeatures.Add(f2);
            layer.InternalFeatures.Add(f3);
            layer.InternalFeatures.Add(f4);


            LayerOverlay overlay = new LayerOverlay();
            overlay.Layers.Add(layer);

            Map1.Overlays.Add(overlay);

            Map1.CurrentExtent = layer.GetBoundingBox();
        }
 
  
 Please let me know what’s your test result, or modify the code to show your problem. 
  
 Regards, 
  
 Don