ThinkGeo.com    |     Documentation    |     Premium Support

Render transforms on text labels

Hello,


Our world map application requires that text labels be stretched side to side depending on the latitude. We accomplish this in WPF easily by setting the ScaleX value of a WPF ScaleTransform object to 1 / cos(latitude), where latitude is expressed in radians.


How could this be accomplished for WpfMap's text? I started to look at the RotatingFeatureText sample for how to override the process, but the sample doesn't do any drawing. Further, it seems that you don't use WPF for drawing. Do you have a similar mechanism that can be used to stretch the resulting text? Or is there a way to override the drawing and use WPF text?


Thank you,


Thaine



Thaine,


 I think that you are going to find what you need in the samples Scaling TextStyle or Scaling TextStyle for Polygon in the Code Community. wiki.thinkgeo.com/wiki/Map_Suite_Wp...es_Samples. Those Desktop Winforms apps but you should be able to adapt them easily to Wpf.


In those samples, we create a custom TextStyle where the size of the label changes based on the scale of the map which is similar to what you are doing but based on latitude. Look at the class ScalingTextStyle and the override function DrawCore to see all the drawing logic.


 I am intrigued by what you are trying to do with stretching label side to side depending on the latitude. Can you explain to us a little more if you are willing to share this of course?



Val, 


Thank you for pointing me to that sample. It looks promising!


Our map is wrapped onto a sphere. Imagine taking a latlon projection world map and squishing it onto a sphere. The poles get crunched together and look normal. But if there are location labels in higher latitudes, they also get crunched and become unreadable. By plotting them stretched on the rectangular latlon projection, they end up looking right when squished onto the globe. 



Thaine



Thaine,


 Now that i see what you are doing from reading the post WpfMap swallows mouse events, I think that the sample i pointed you out is going to help you. By using your custom TextStyle and have your own drawing logic for label according to latitude should compensate for the cruching problem at higher latitudes. Thank you.