ThinkGeo.com    |     Documentation    |     Premium Support

A Big Problem in InMemoryFeatureLayer

Hi,

I want to add a description to a plane.

but the description label do not show complete, but show partial infomation.

But in a different zoom lever, the infomation may be full displayed.

such as the left side plane’s infomation. some details like to cut off by a vertical line.





in a different zoom level ,the infomation show completely. the following picture:





and the area point’s description is the same problem.

the location infomation in red box is NOT show completely.



in a different zoom lever, the location infomation show fully.  see the follwing picture’s red box.





part of my code:




      InMemoryFeatureLayer
planLabelLayer = new InMemoryFeatureLayer();//create a InMemoryFeatureLayer


      planLabelLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.TextColumnName
= “lable”;//the description label will be showed.


            planLabelLayer.Open();


            planLabelLayer.Columns.Add(new FeatureSourceColumn(“lable”));


           
planLabelLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.PointPlacement
= PointPlacement.LowerRight;


           
planLabelLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.Font = new ThinkGeo.MapSuite.Core.GeoFont(“Airl”, 10);


           
planLabelLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.TextSolidBrush
= new GeoSolidBrush(GeoColor.FromArgb(255, 255, 255, 255));


           
planLabelLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;


            planLabelLayer.Close();


cycleRefreshOverlay.Layers.Add(“planLabelLayer”, planLabelLayer);//add the planLabelLayer to a LayerOverlay


 


                //add the feture to planLabelLayer


               
planLabelLayer.InternalFeatures.Clear();


                for
(int i = 0; i < lablefeatures.Count; i++) //lablefeatures: I have added some description feture in it


                {


                    try


                    {


                        planLabelLayer.InternalFeatures.Add(lablefeatures.Id,
lablefeatures);


                    }


                    catch
(System.Exception ex)


                    {


                        System.Diagnostics.Debug.WriteLine(ex);


                    }


                }




-----------------------------------------------



thanks,

yours liu


Hi Liu, 
  
  You can fix it by either setting: 
  
     YourInmemoryLayerOverlay.TileType = TileType.SingleTile 
  
 or 
  
     planLavelLayer.DrawingMarginPercentage = 0.8 
  
 Carlos

Liu, 
  
 Carlos is right, your label should cut by tile border.  
  
 Regards, 
  
 Don

hi, Don and Carlos

thanks your reply.

when I use the method 1:

YourInmemoryLayerOverlay.TileType = TileType.SingleTile

the problem is resolved.

But in some zoom lever, It display ONLY ONE plane label.

the left side is not showed. see the following picture:



Is the two label overlay each other?  so there can display only one label.

but in a more detail zoom level,

the both two label are showed.



why?



and when I use the method 2:

planLavelLayer.DrawingMarginPercentage = 0.8 

the problem remain.



thanks,

yours liu

Hi Liu, 
  
 How you put your label? Based on the plane location? 
  
 Try this please,  
  
 textStyle.DuplicateRule = LabelDuplicateRule.UnlimitedDuplicateLabels; 
 textStyle.OverlappingRule = LabelOverlappingRule.AllowOverlapping; 
  
 Regards, 
  
 Don