ThinkGeo.com    |     Documentation    |     Premium Support

TextStyles and ZoomLevels

 I want to be able to create a point style that starts at ZoomLevel10 until ZoomLevel20.  I want labels to start at Zoomlevel15 until ZoomLevel20.  If I do this:


 


ZoomLevel10.DefaultPointStyle = _DefaultPointStyle;


ZoomLevel10.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;


ZoomLevel15.DefaultTextStyle = _DefaultTextStyle;


ZoomLevel15.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20;


 


Then the points are properly rendered from levels 10-14.  At level 15, the point rendering disappears and the labels appear.  How do I continue displaying the previously set pointstyle for levels 10-20?



Thomas,  
  
 Thank you for the post!  To accomplish what you want to do you code would need to look like this: 
  
 ZoomLevel10.DefaultPointStyle = _DefaultPointStyle; 
 ZoomLevel10.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level14; 
  
 ZoomLevel15.DefaultTextStyle = _DefaultTextStyle; 
 ZoomLevel15.DefaultPointStyle = _DefaultPointStyle; 
 ZoomLevel15.ApplyUntilZoomLevel = ApplyUntilZoomLevel.Level20; 
  
 Hope this helps, Thanks!

 That was my fear!  I am dynamically building text styles and point styles from a definition file and I was hoping zoomlevels would inherit styles not explicitly defined.  I did not want my text styles and point styles to be aware of each other.



Thomas, I see what you are saying and I think you have a couple options. 
  
 First Option:   Don’t use the ApplyUntilZoomLevel property and instead set every zoom level explicitly for each style.  For example if your definition file says show the point style from 10 until 20 loop through and set the PointStyle for ZoomLevel10, ZoomLevel11, ZoomLevel12 ect…  Then for the TextStyle do the same by setting ZoomLevel15, ZoomLevel16, ect…    I think you could write a generic routine that would read your definition file and give you the effect you want. 
  
  
 Second Option:  Take a look at using Custom Zoom Levels and implementing your own scale system and custom zoom level set.  I personally would go with the first option over this one because it seems like whenever you start using Custom Zoom Levels things get a lot more complicated to manage.   But in your case it may be worth looking into. 
  
 Hope this helps. 
  
 Thanks!

 Thanks, 


   I think I'll probably go the brute force method.   I had started writing an algorithm that would determine the last set zoomlevel and make changes to related zoomlevels accordingly.  However, I think that could get dicey, and a brute force method, though ugly and bloated, will be more reliable.



Thanks Thomas, I agree with the Brute force method it will be easier to know exactly what is going on.  Let us know how it goes or if you have any additional questions. 
  
 Thanks!