ThinkGeo.com    |     Documentation    |     Premium Support

How to make labels always show up, not dependent on scales?

I have these two lines:

theTextStyle.OverlappingRule = LabelOverlappingRule.AllowOverlapping;


 theTextStyle.DuplicateRule = LabelDuplicateRule.UnlimitedDuplicateLabels;



however, my labels for highway/roads seem still dependent on map scales/font size.



any other settings?



Thanks,



Hi guangming, 



I guess there is another property that you can have a try.




            citiesLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.GridSize = 10;


If there are too many overlapped each other, you can apply the following property as well:



            citiesLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.SuppressPartialLabels = true;



Thanks, 

Johnny

thanks, Johnny. That did not solve the problem. I believe that is related if to show the cut-of labels at the edge of the map. 
  
 What I am looking for is how to control which scale to show labels or not? also I found out that at a given map scale, it shows label of smaller fonts but not those of bigger fonts. 
  
 I would like to know how to control these? and also what are the default behaviors? 
  
 Thanks, 
  
 Guangming

Hi guangming,


The GridSize is not for cut-of labels, it’s used to
calculate the density of displaying the labels. For the question on how to
control which scale to show labels or not, it depends on the TextStyle of zoom
level, if you didn’t give the textStyle to a specific Zoom level (scale), we
will not show the labels on that scale. Here are some codes:


ShapeFileFeatureLayer majorCitiesShapeLayer = new ShapeFileFeatureLayer(@"..\..\SampleData\Data\MajorCities.shp");
majorCitiesShapeLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle = TextStyles.City1("AREANAME");
majorCitiesShapeLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.OverlappingRule = LabelOverlappingRule.AllowOverlapping;
majorCitiesShapeLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

If you just would like to show the label on  Zoom level 06, you just need to change the zoomLevel01 to ZoomLevel06, and change ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level06.



Hope it helped.



Johnny



my settings:  
             theTextStyle.OverlappingRule = LabelOverlappingRule.AllowOverlapping; 
             theTextStyle.DuplicateRule = LabelDuplicateRule.UnlimitedDuplicateLabels; 
             theTextStyle.LabelAllLineParts = true; 
             theTextStyle.SuppressPartialLabels = false; 
             theTextStyle.GridSize = 10; 
  
 I have customized styles for the layers. This issue just happened to line layers like highway/roads, not point and polygons. 
  
 So I still think it relates to some settings of line layers.  
  
 Weird as I said earlier, for smaller fonts, the labels will show up but not bigger fonts given some scales. 
  
 Any ideas?

I have customized zoomlevelset to map: fewer levels eg from 7 to 20. 
  
 but I did not set the customized zoomlevelset to each layer. does it matter? for all the map layers, I did this: 
 majorCitiesShapeLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;

Hi Guangming, 
  
 How you modified the zoomlevel set? If you put your custom zoomlevels in ZoomLevelSet.CustomZoomLevels, you also need to set style for layer corresponding zoomlevel, 01 apply 20 don’t works for CustomZoomLevels. 
  
 Regards, 
  
 Don

confident that the custom zoom level not the problem, but textLineSegmentRatio. please answer my other questions in that topic of textLineSegmentRatio. thanks

Hi Guangming, 
  
 I will reply you in another topic. 
  
 Regards, 
  
 Don