ThinkGeo.com    |     Documentation    |     Premium Support

SyncZoomLevel

 Hello,


I have been using code like the following in order to ensure the ZoomLevels of the Web map that I set actually take effect.


However, SyncZoomLevelSet seems to now be marked as obsolete, but when I omit it and just set the ZoomLevelSet as shown below, they do not take effect. This is evidenced by observing the given scale level of e.CurrentScale in the ExtentChanged event when zooming into and out of the various ZoomLevels. Ultimately, I want to set the scales for each zoom level once and be sure that they are theset scale regardless of Client or Server.


Thanks.


 


 


With mapWeb.ZoomLevelSet                     .ZoomLevel01.Scale = 325000                     .ZoomLevel02.Scale = 182000                     .ZoomLevel03.Scale = 102800                     .ZoomLevel04.Scale = 57840 'Full Extents                     .ZoomLevel05.Scale = 43380                     .ZoomLevel06.Scale = 32530                     .ZoomLevel07.Scale = 24400                     .ZoomLevel08.Scale = 18300                     .ZoomLevel09.Scale = 13720                     .ZoomLevel10.Scale = 10300                     .ZoomLevel11.Scale = 7720                     .ZoomLevel12.Scale = 5800                     .ZoomLevel13.Scale = 4300                     .ZoomLevel14.Scale = 3260                     .ZoomLevel15.Scale = 2445                     .ZoomLevel16.Scale = 1830                     .ZoomLevel17.Scale = 1370                     .ZoomLevel18.Scale = 775                     .ZoomLevel19.Scale = 435                     .ZoomLevel20.Scale = 245                 End With                  mapWeb.SyncClientZoomLevels(mapWeb.ZoomLevelSet)



Hello Nelson, 



Yes the SyncZoomLevelSet was set to obsolete, and it will be remove in this release. 



Now, we have some new way to deal with this situation, please see the code below: 


                ZoomLevelSet zoomLevelSet = new ZoomLevelSet();
                zoomLevelSet.ZoomLevel01.Scale = 1000000;
                zoomLevelSet.ZoomLevel02.Scale = 500000;
                zoomLevelSet.ZoomLevel03.Scale = 250000;
                zoomLevelSet.ZoomLevel04.Scale = 0;
                zoomLevelSet.ZoomLevel05.Scale = 0;
                zoomLevelSet.ZoomLevel06.Scale = 0;
                zoomLevelSet.ZoomLevel07.Scale = 0;
                zoomLevelSet.ZoomLevel08.Scale = 0;
                Map1.ZoomLevelSet = zoomLevelSet;



You just need create a new zoomlevelset object and assign it to the Map.ZoomLevelSet property, now we design like this because we want to keep the unity in our MapSuiteCore. 



Regards, 



Gary



I had first tried doing as you said above, only instead of assigning a new ZoomLevelSet to the map.ZoomLevelSet property, I explicitly set the ZoomLevelXX.Scale to the default map.ZoomLevelSet.  
  
 Is there a difference?

Hello Nelson, 
  
 Sorry for make you confused, yes there is difference, in Map1.ZoomLevelSet property set method, we will do a SyncClient operation, but in ZoomLevel.Scale property, we don’t, so this is the problem. 
  
 Regards, 
  
 Gary

Ok, that makes sense. Thanks.

You are welcome, any time when you meet problems just let us know.