ThinkGeo.com    |     Documentation    |     Premium Support

Sync openlayers and thinkgeo web zoom level

Hey,


       As you may know that the zoom level in open layers varies from 0 to 15  by default and thinkgeo has it from 1 to 20. Now in my application im adding value style and then applyng these styles upto a certain zoom level. But the zoomlevel  set for my valuestyles and when it is actually applied on client side is different.


 


eg if zoomlevel01 is applied till zoomlevel08 and then in the map when the user zoomed in 6x then the next zoom the styles disappear..


why this  inconsistency and how can i fix it?


 


Thanks,


Anil



Hi, Anil 
  
 You could set custom zoom levels in OpenLayers as well as our WebEdition 3.0 product. We have a code community project "Customize ZoomLevels" in our Map Suite Code Community which you can find its source code at the link below: 
 code.thinkgeo.com/projects/show/105 
  
 If you still have any problem please let me know. 
  
 Thanks, 
 Khalil

Hey khalil,



Appreciate the quick reply. The steps that you specified was exactly what i wanted but there is a problem now. If i want to add value styles for certain zoom levels how do i go abt it. I did the following changes to your code





                var vstyle = new ValueStyle();

                vstyle.ColumnName = "STATE_ID";

                vstyle.ValueItems.Add(new ValueItem("1", AreaStyles.Country2));

                vstyle.ValueItems.Add(new ValueItem("2", AreaStyles.Antarctica1));

                vstyle.ValueItems.Add(new ValueItem("3", AreaStyles.Country1));

                vstyle.ValueItems.Add(new ValueItem("40", AreaStyles.Water2));

                vstyle.ValueItems.Add(new ValueItem("50", AreaStyles.Wildlife1));



                ShapeFileFeatureLayer USLayer = new ShapeFileFeatureLayer(MapPath("~/App_Data/states.shp"));

                USLayer.ZoomLevelSet.CustomZoomLevels.Add(GeAreatZoomLevel(7500000, vstyle));





        private ZoomLevel GeAreatZoomLevel(double scale, Style areaStyle)

        {

            ZoomLevel zoomLevel = new ZoomLevel(scale);

            zoomLevel.CustomStyles.Add(areaStyle);

            return zoomLevel;

        }


This worked. Now say i dont wanna apply any styles after a certain zoomlevel what should i do? cos in my application i need to hide certain features after a certain level.


just not giving them styles doesnt hrlp. they render with the previous style for some reason.











Hi, Anil


 


Yes, if you don’t give some zoom level styles and it will get the closest possible custom zoom level depend on scale to render.


So you could give a default style which contains nothing but just a style object. Please refer to the code in the attachment.


 


Thanks,


Khalil




1885-TestForm.zip (2.35 KB)