ThinkGeo.com    |     Documentation    |     Premium Support

Displaying labels at all map extents, condition specific labeling











I am evaluating MapSuite 3.0 web edition along with Autodesk Mapguide and ArcGIS server.  I am trying to develop a sample web mapping application for evaluation purposes. I found that label is not being displayed at all map extents. I am wondering how can we ensure that the label display at all map extents in MapSuite? We have a highway layer and I am creating a separate layer for labeling. What I would like to see is highways labeled at any map extent.  Autodesk Mapguide has options for multiline labeling. I found that in Mapguide label is always displayed in current map extent no matter if multiline labeling is used or not.  


            I have another question related to labeling based on some specific conditions. For example, I may want to show labels only when area (assume that it is one of the attribute of the shape file) is greater than some threshold.


 



Thanks,


Nand


 












 


Nand Jha


Web GIS Developer  |   JuneWarren-Nickle’s Energy Group 

p: (403)209-3588 | e: njha@junewarren-nickles.com

junewarren-nickles.com 



 




Nand, 
  
 Welcome you to ThinkGeo MapSuite WebEdition Forum! 
  
 Hopefully, my following answers will give you some help. 
  
 1. How to ensure the label display at all Map Extents? 
 In MapSuite, you can control the Visible/Invisible  for each layer separately by ZoomLevel, for example, you have a label layer want to be displayed at all zoomLevels, you can use following statement to make it: 
  
 worldLabelLayer.ZoomLevelSet.ZoomLevel01.DefaultTextStyle.TextSolidBrush = new GeoSolidBrush(GeoColor.StandardColors.Black); 
 worldLabelLayer.ZoomLevelSet.ZoomLevel01.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 
  
 2. MultiLineLabeling problem 
 I just want to make sure you want to label every Line within the MulitiLine? In our default logic, we cannot do this. But MapSuite component is a very extensible structure, we can easily achieve this by writing our own TextStyle. 
  
 3. Show labels based on some specified data condition. 
  We can easily implement this by using ValueStyle or ClassBreakStyle. 
  PLEASE take a look at the HowDoISamples Styles DrawFeaturesBasedOnValues and some similar samples. 
  
 If you have any more questions just do not hesitate to let me know. 
  
 Thanks. 
  
 Yale 



















Hi Yale,


Thanks for the prompt reply. I am impressed with your rich and easy to use APIs for GIS development. I miss a GUI based map authoring tool though which can facilitate created map to be used in the web application. In this way, map-authoring and software development part can be separated from each other. Do you have any plan to come up with a map-authoring tool like that in near-future? 


I have tried to list my response point wise.


1. How to ensure the label display at all Map Extents? 


I am familiar with the use of Zoom levels. Maybe, I was not clear in my last post. Please have a look at the attached images. The label '2A' can be seen in one image but the label is missing in the other image. When I pan the map, I want to be able to see labels at all map extents.


2. Multiline Labeling problem 


This is not so important if we are able to see labels at any map extent while panning the map.


3. Show labels based on some specified data condition. 


I am looking into that. I am little concerned about using value style though as it gives less control in drawing order of layers and labels. I will let you know if I face any issue.


 


Thanks,


Nand


 


 



792-label_2A_visible.jpg (40.6 KB)

Nand, 
  
 I am sorry I misunderstood what you are initial attempt to display the label at all Map Extents. 
  
 If you want any records in one shape file should be labeled at any Map Extents, the simplest and most flexible way is to write your own labeling logic which is inherits from TextStyle or PositionStyle. 
  
 Because our current labeling logic will only do a Label at the longest line segment for a Multiline record? If the longest line segment is outside of the Map view extent, then it will not be labeled. 
  
  Any more problems just let me know. 
  
 Thanks. 
  
 Yale