ThinkGeo.com    |     Documentation    |     Premium Support

Align text in InMemoryFeatureLayer

Is there a way to reliably align text in an InMemoryFeatureLayer?


The way I am doing it right now is by adjusting the offset as follows (textLayer is my InMemoryFeatureLayer)-



textLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.XOffsetInPixel = -115;


textLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.YOffsetInPixel = 0;


This is not very reliable when it comes to different Zoom levels.


How to make the text be displayed as Left align especially for line shapes?


How can I maintain the text to stay in the same position regardless of the zoom level?



I look forward to hear from you.


Thanks.


 



GNak, 
  
 The text is displayed at the center of a line and we don’t support left align for now. We tried overriding the TextStyle.GetLabelingCandidateCore method to implement it, we can do it technically but it needs a huge amount of code on user’s side, so I think we cannot support it in practice with the current version. I have added it to our issue tracking system and maybe we can have it in the next version. 
  
  About maintaining the text to stay in the same position, I think what you want to accomplish is no matter how far I zoom in or out, the text is always displayed at the same relative position, for example 20% of a line to the left. Is that right? I think that’s similar as the left Align problem and we need to think about how to provide a good API for this. 
  
 Thanks, 
  
 Ben 


GNak,


I don't know if you solve your problem or not.


I have an idea about how to do it. You know we use center point of shape as the placement for label, so I just create a point represents center point, and assign text to it, and then I can use point style to easily control the placement of it.


I attached the sample, you can look at it.


Thanks


James


 



1515-TextAlignDemo_ChangePlacement.zip (11.3 KB)

I am using the latest webedition, 3.1.299.0. Does this version support left alignment for the InMemoryFeatureLayer feature. If yes, could I designated multiple type of text alignment for the same InMemoryFeatureLayer layer or do I have to create a new InMemoryFeatureLayer. 


Basically, what I am trying to do is get the the text lable from an OpenLayers.Popup and add to the InMemoryFeatureLayer feature. I tried to search for an OpenLayers.Popup properties and methods to get the boundingbox but couldn't locate it. 


If you have any suggestions on how best to accomplish this, it would be of great help. Thanks


 



ttd, 
  
 The latest version hasn’t supported the left alignment for the InMemroryFeatureLayer, but I think you can manage to get what you want via the James solution. 
  
 InMemoryFeatureLayer allows us to define multiple type of text alignment for different kinds of values via ValueStyle, otherwise we need to create a new InMemoryFeatureLayer. 
  
 I’m confused with the purpose of your description, but I’m sure we can do it. I think the application needs to use CallBack to send the Popup properties to server side, and then add it into InMemoryFeatureLayer, because the features of InMemoryFeatureLayer can’t be found at client side. 
  
 Thanks, 
  
 Johnny