ThinkGeo.com    |     Documentation    |     Premium Support

Need to apply text styles to features on the map

Hi,


My requirement is to apply text styles (such as font,font size, pentype, xoffset ,yoffset and rotation etc..) to the features on the map. Please provide me some examples.


I have tried to apply text styles to features as follows but it is not working.  I have attached the .cs file for referen


 


 



void



 MainPage_Loaded(object sender, RoutedEventArgs e)MouseCoordinateType.LatitudeLongitude;true;GeographyUnit.Meter;true;new SolidColorBrush(Color.FromArgb(255, 255, 255, 255));ServerLayerOverlay overlay = new ServerLayerOverlay("CanaveralMap1Server", "SilverlightMapConnector1");"CanaveralMap1Server", overlay);ServerLayerOverlay overlay1 = new ServerLayerOverlay("CanaveralMap2Server", "SilverlightMapConnector1");"CanaveralMap2Server", overlay1);ServerLayerOverlay overlay2 = new ServerLayerOverlay("CanaveralMap3Server", "SilverlightMapConnector1");"CanaveralMap3Server", overlay2);new RectangleShape(533181.490451491, 3144268.68096696, 544626.363014241, 3138546.24468558);"CanaveralMap1Server");"CanaveralMap2Server");"CanaveralMap3Server");null;null;double x = 537530.542025336;double y = 3142780.8475;GeoFont font=new GeoFont("Arial",50,true);TextStyle txtStyle = new TextStyle("Name",new GeoFont("Arial",40),new GeoSolidBrush(new GeoColor(255,0,0)));false;///key

 


inMemoryFeatureLayer.Columns.Add(


inMemoryFeatureLayer.Columns.Add(


 


InMemoryFeatureLayer inMemoryFeatureLayer = new InMemoryFeatureLayer();new FeatureSourceColumn("State"));new FeatureSourceColumn("Name"));//inMemoryFeatureLayer.ZoomLevelSet.ZoomLevel01.DefaultPointStyle = PointStyles.CreateSimplePointStyle(PointSymbolType.Circle, GeoColor.StandardColors.Blue, 50);

CreateValueStyle();


inMemoryFeatureLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(vs);


 


//add txt style to inmf

inMemoryFeatureLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(txtStyle);


inMemoryFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel =


 


 


 


 


ApplyUntilZoomLevel.Level20;PointShape Radarpoint = new PointShape(x, y);//inMemoryFeatureLayer.InternalFeatures.Add(pointFeature.Id, pointFeature);

 


f.ColumnValues[


 


Feature f = new Feature(new PointShape(x, y));"State"] = "fail";// set feature colomn value

f.ColumnValues[


 


 


"Name"] = "asfoojhiodfhidbfgdbgfdgfdgtf";// Add feature to in mem layer

inMemoryFeatureLayer.InternalFeatures.Add(f);


 


 


 


layerFeatureOverlay.Layers.Add(


Map1.Overlays.Add(


 


}


 


{


vs.ColumnName =


vs.ValueItems.Add(


vs.ValueItems.Add(


}


LayerOverlay layerFeatureOverlay = new LayerOverlay();"radar", inMemoryFeatureLayer);"AustinOverlay", layerFeatureOverlay);private void CreateValueStyle()"state";new ValueItem("ok",new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(new GeoColor(255,0,0)),20)));new ValueItem("fail", new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(new GeoColor(0, 255, 0)), 20)));

 



{


Map1.MapTools.MouseCoordinate.MouseCoordinateType =


Map1.MapTools.PanZoomBar.IsEnabled =


Map1.MapUnit =


Map1.MapTools.MouseCoordinate.IsEnabled =


Map1.Background =


 


Map1.Overlays.Add(


 


Map1.Overlays.Add(


 


Map1.Overlays.Add(


Map1.CurrentExtent =


Map1.Refresh();


m_MapDetails.lstNotSelectedMaps.Add(


m_MapDetails.lstNotSelectedMaps.Add(


m_MapDetails.lstNotSelectedMaps.Add(


lstBoxAvailableMaps.ItemsSource =


lstBoxSelectedMaps.ItemsSource =


lstBoxAvailableMaps.ItemsSource = m_MapDetails.lstNotSelectedMaps;


lstBoxSelectedMaps.ItemsSource = m_MapDetails.lstSelectedMaps;


 


 


 


 


 


 


txtStyle.SuppressPartialLabels =


 



002_001_MainPage.xaml.cs (12.7 KB)
MainPage.xaml (208 KB)

Srikar, 
  
 The discussion forum doesn’t allow .cs file as attachement, please zip the files and attach again. 
  
 And we have a sample to show how to apply TextStyle on InMemoryFeatureLayer, HowDoI samples->MovingAroundTheMap->ZoomInToAFeatureClicked 
  
 Thanks, 
  
 James

Hi James,


I will go through the HowDoI samples.Please let me know the issue in my code (refer the attached files).


Thanks,


Srikar



C#files.zip (21.2 KB)

Srikar, 
  
  We were unable to get the C#files.zip. Something went wrong in the upload. Can you try to attach it again? Also, please sent it to support at support@thinkgeo.com to make sure we get it. 
  I would also ask you if you can provide a self contained sample app for your issue. It is always faster and easier for us to help the users when we have a small sample app as opposed to just some sample code. Thank you.

Hi James,


I went through the samples->MovingAroundTheMap->ZoomInToAFeatureClicked but it is not related to my requirement. 


My requirement : I need to change the style of the text displayed for a feature. Please refer the screen shot for addition information.  
 
I am unable to share the sample application with you as the size is very large. I have sent files (support@thinkgeo.com ) & uploaded files again.
 
Let me explain what am i doing the sample application.
 
1) I have created in MemoryFeature Layer with two colomns as follows.
 
InMemoryFeatureLayer inMemoryFeatureLayer = new InMemoryFeatureLayer();

inMemoryFeatureLayer.Columns.Add(new FeatureSourceColumn("State"));

inMemoryFeatureLayer.Columns.Add(new FeatureSourceColumn("Name")); 
 
2) Created value style.    
   
ValueStyle vs = new ValueStyle();
vs.ColumnName = "state";
vs.ValueItems.Add(new ValueItem("fail", new PointStyle(PointSymbolType.Circle, new GeoSolidBrush(new GeoColor(0, 255, 0)),20)));
 
3) Created text style.
 
GeoFont font=new GeoFont("Arial",50,true);
TextStyle txtStyle = new TextStyle("Name",new GeoFont("Arial",40),new GeoSolidBrush(new GeoColor(255,0,0)));
txtStyle.SuppressPartialLabels = false;
 
4) Added the styles to in memory feature layer.
 
inMemoryFeatureLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(vs);
inMemoryFeatureLayer.ZoomLevelSet.ZoomLevel01.CustomStyles.Add(txtStyle);
inMemoryFeatureLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;
 
5) Created a feature  & set values for the columns. Refer the screen shot the feature is being displayed on the map.
 
double x = 537530.542025336;
double y = 3142780.8475;
PointShape Radarpoint = new PointShape(x, y);
          
Feature f = new Feature(new PointShape(x, y));
f.ColumnValues["State"] = "fail";
f.ColumnValues["Name"] = "Feature text";
 
6) Added the feature to memory layer & layer to the map object.
 
inMemoryFeatureLayer.InternalFeatures.Add(f);
LayerOverlay layerFeatureOverlay = new LayerOverlay();
layerFeatureOverlay.Layers.Add("radar", inMemoryFeatureLayer);
Map1.Overlays.Add("AustinOverlay", layerFeatureOverlay);
 
Problem:
 
When I change text style in step 3,  like font (Times New roman, Arial etc..), font size , font style (Bold or Italic) or rotation angle. The. Styles are not applied to the feature’s text on the map.
 
Please let me know if you need any other information. 
 
 
 
 
 
 
 
Thanks,
Srikar.
 
 
 
 

                                                                                                                               



 



001_C#files.zip (21.2 KB)
Screen_shot.GIF (59.3 KB)

Plz refer the attached screen shot. it was missing in the ealier post.



Srikar, 
  
 The sample ZoomInToAFeatureClicked has an InMemoryFeatureLayer, and when you click and select a feature, then it will be added to inmemory layer to show label country name, I think it’s the same as your requirement, could you correct my description if anything different. 
  
 Meanwhile, I am looking at your sample code and try to figure out your problem. 
  
 Thanks, 
  
 James

Srikar,


I have tested your sample code, it works properly. Please see my screen-shot below.



I have modified a little bit of your code to make it compile in my machine, so I attached it as well, you can check if I miss anything.


Thanks,


James



code8971.txt (2.33 KB)

Dear James,


Yes, the sample is displaying the text. But i am facing problem when i do the following


1) Setting Font Size


2) Rotation Angle


3) Font Style: Bold/Italic


Please find the attached document (Problems_In_Applying_FeatureStyle.doc), i have explained individual problems.


Please let me know how to resolve those issues.


Thanks for your support.


Regards,


Srikar



Problems_In_Applying_FeatureStyle.doc (39.5 KB)
MainPage.txt (924 Bytes)
MainPage_cs.txt (3.92 KB)

Srikar,


Thanks for your detail information.


I think you must use the 4.5.0.0 version of SilverlightEdition which released November last year, we have fixed those bugs at the beginning of this year, so you can get the latest version(development branch) from daily builder at custom portal and try it again, or you can wait the next public version 5.0.0.0 which will release at May 1st.


Also I provide the sample code for Mask and HaloPen below:


txtStyle.HaloPen = new GeoPen(GeoColor.StandardColors.Yellow, 10);
txtStyle.Mask = AreaStyles.Antarctica1;

Let me know if you have more questions.


Thanks,


James



Dear James,



We have now migrated to MapSuite 5.0 and tried the Halo effect. But facing the below issue.



Problem: HaloPen is having different effect in Desktop Edition and Silverlight Edition. And how to achieve the desktop edition effect in Silverlight?



1) Desktop Edition HaloPen effect:

Font: Arial, Bold, size 19.

txtStyle->HaloPen = new Pen(Color::White, 2);

 

 


2) Silverlight Edition:


Font: Arial, Bold, size 19.

a) textStyle.HaloPen = new GeoPen(GeoColor.StandardColors.White, 2);



b) textStyle.HaloPen = new GeoPen(GeoColor.StandardColors.White, 5);



c) textStyle.HaloPen = new GeoPen(GeoColor.StandardColors.White, 10); 




 


But we want the similar Desktop Edition Effect in Silverlight Edition. 


How to achieve this?


Thanks in advance,


Srikar

 



Srikar,


  I think that you uncovered a bug with halo in the SilverLight edition. I communicated this to the SilverLight team and we will see what they say. Thank you.



Hi Srikar, 
  
 The attached code is not well formatted and the attached file is unable to download. Please zip the attached file and repaste it again. I’m not sure if you want to implement it on client side or server side. So I want to review the code first and give you a sample then. 
  
 Thanks, 
 Howard

Srikar,


  I communicated the issue with halo in the Wpf edition and they did some enhancement. Halo can be shown in Wpf as you can see in the screen shot below. You will need to go to Customer Portal and get the latest version. The new build version is 5.5.46.0




Dear Val,


We are facing this issue in MapSuite silverlight edition. But your replay says, it has been fixed in WPF edition :(.


Kindly provide us fix in Silverlight Edition.


Thanks & Regards,


Srikar



Srikar,


  Actually, I meant SilvereLight edtion, not Wpf. The Development team told me that SilverLight doesn't support halo pen in a way it can be supported in the Wpf and Desktop editions because it needs server side support. They still managed to do some enhancements to it as it is shown in the screen shot in my previous response. You can get the new build version 5.5.46.0 or above to see that enhancement in the SilverLight edition. Thank you.



Srikar,


 


   Actually, I meant SilverLight edition, not Wpf. The Development team told me that SilverLight does not support halo pen in a way it can be supported in the Wpfand Desktopn editions because it needs server side support. They still managed to do some enhancements to it as it is shown in the screen shot in my previous response. You can get the new build version 5.5.46.0 or above to see that enhancement in the SilverLight edition. Thank you.



Dear Val,


During our latest migration we had a chance to test this Halo pen fix, but what you showed above (halo pen effect in your sample screen shot) and what we get in our application is totally different and only very small improvement over 5.5 version.


Please check and let us know whether you have applied any other style to achieve the above halo pen effect.


Whatever you showed above will fulfill our requirement (if it works in our application:)).


Halo effect comparision of version 5.0 and 5.5.118 is attached below for your reference.


 


Thanks in advance.


Regards,


Srikar.



Srikar,


  Thank you for providing detailed examples demonstrating the issue with halo pen in the SilverLight edition. We have the Development team looking at that. I will let you know when we have a fix. Thank you.



Srikar,


  The feedback I got from the Development team is that Silverlight is inherently different from Desktop Edition in some drawing aspects. Halo is still happening in Silver Light but you need to apply different higher halo width compared to the Desktop Ediiton. Thank you.