ThinkGeo.com    |     Documentation    |     Premium Support

CustomZoomLevels

I'm working on a mapping package that uses SQLServer2008FeatureLayers.  The package uses Ad-Hoc queries to select data for each feature type and the data is generalized for a custom zoom level set.  In order to retreive the correct data, I need to know the current zoom level to modify the ad-hoc query.


In order to implement this system, I need to know the current zoom level whenever the client changes the map extent.  I'm using SyncClientZoomLevels to set up the map control to my custom zoom levels, and ClientZoomLevelScales and CurrentScale to determine the current zoom level.  I have looked at the CustomZoomLevels web project and I have a couple of questions.


Does the map control ExtentChanged event fire before the the map is redrawn (before the database is queried)?


Will the CurrentScale always be one of the ZoomLevel scales in the CustomZoomLevelSet used in SyncClientZoomLevels?


Charles



Hi, Charles 
  
 Yes, the ExtentChanged event of Map Control will be fired after a drag, pan or zoom completes, and just as you know we use asynchronous mode to send requests to server, and so if your queries will takes a long time and this event still will be triggered before your query is done. But, I am sure that you will get the right CurrentScale and CurrentExtent. 
  
 Another thing is that if you want the CurrentScale always to be one of the ZoomLevel scales in the CustomZoomLevelSet used in SyncClientZoomLevels, you just need to set the right DPI on the client side. Like the code below: 
         var OnMapCreated = function(map) { 
             OpenLayers.DOTS_PER_INCH = 96;//96 is the default value. 
         } 
  
 Thanks, 
 Khalil