ThinkGeo.com    |     Documentation    |     Premium Support

Custom ZoomLevelSets continued

If I set the desktop map control to disp[lay the full extent of the data set, it appears to open at zoom level 10.  As I zoom in or out, I can determine the current zoom level using the following:



        MapControl.ZoomLevel = winformsMap1.ZoomLevelSet.GetZoomLevel(winformsMap1.CurrentExtent, winformsMap1.Width, NextGenProject.GeographyUnits);

I want to use custom zoom levels.  The zoom level is built using a maximum scale of 1:100 and a minimum scale of roughly 1:500000.  I assume that the current zoom level is determined by the scale of the map window, but is there a way of determinimg which custom zoom level is current?


I realize this is the desktop forum, but I will also need to determine the current zoom level for the web edition.


Charles


 


 


 



Charles,


Thanks for your post and question.
 
I think the API GetZoomLevel can work even we use customized zoom level set, try following code in attachment which prototype is from our code gallery.
 
About the Web Edition, I think it should be exactly the same, because I verified that the client side is synchronized to server side which should use the same API. Following 2 samples in our code community show how to use customized zoomlevels.
code.thinkgeo.com/projects/show/customizezoomlevels
code.thinkgeo.com/projects/show/customzoomlevels
 
Any more questions just feel free to let me know.
 
Thanks.
 
Yale

2128-ZoomLevelPartitioning_20100603.zip (50.4 KB)

Yale,



Is there a conflict when trying to set the CurrentExtent of the map control and using a CustomZoomLevelSet?  I am using a CustomZoomLevelSet created by starting with a scale of 100 and doubling the scale for every ZoomLevel I add.  I am using 20 custom ZoomLevels.




            double scale = 100.0;
            mZoomLevels = new ZoomLevelSet();
            for (int looper = 0; looper < 20; looper++)
            {
                ZoomLevel zoom = new ZoomLevel(scale);
                scale = scale * 2;
                zoom.Name = (looper + 1).ToString();
                mZoomLevels.CustomZoomLevels.Add(zoom);
            }



When I open a new layer, I set its ZoomLevelSet equal to my custom ZoomLevelSet, I set its SRID (I'm using 102747 Virginia NAD83 State Plane South Feet).



When I try to set the map control CurrentExtent, I see it is defaulted to:



(-70.3125,70.3125,1179.84375,-831.09375)



I set it equal to this RectangleShape:



(11671261.87,3849386.98,11863966.75,3612249.42)



When I check the value after the setting code I get back:



(-8462074.60,18317129.34,31997303.23,-10855492.92)



I am at a loss as to how to troubleshoot this problem.




Charles



After some research I realized that the SRID (102747) may not be usable by your map control.  I have changed to using SRID = 0 and using a projection string with proj4projection. 
  
 There is no change in the extent values however. 
  
 Charles

Nate,


Thanks for your post and question.
 
Charles,
 
I tried the SRID and It seems that the 102747 is included in the Esri library. Try following code to get the string of it.

 

string str1 = Proj4Projection.GetEsriExtraParametersString(102747);
string str2 = Proj4Projection.GetEsriParametersString(102747);
 
string str1 = ManagedProj4Projection.GetEsriExtraParameters(102747);
string str2 = ManagedProj4Projection.GetEsriParameters(102747);


About the changes about the current extent set, it is always normal because after you set the extent, it will do some snapping to those predefined zoom levels no matter default zoomlevel set or customized zoomlevel set used. While from the data listed, huge changes occurred which seems not correct. Could you send me a comparatively complete sample to see the problem, that would be very helpful to fix out the problem.
 
Any more questions just feel free to let me know.
 
Thanks.
 
Yale

Yale, 
  
 Building the simple example showed me the error of my ways.  The Custom ZoomLevelSet was in the wrong order.  It started with a scale of 100 at level 1 and the scale value increased as the zoom level increased.  When I reversed the order, the issue with the CurrentExtent went away and the data displayed properly in my application. 
  
 Charles

I am glad this is working for you. If you have any other question, let us know and do not forget to check the Code Community for new projects every week. code.thinkgeo.com/