ThinkGeo.com    |     Documentation    |     Premium Support

Map1.CurrentScale is NaN and Map1.CurrentExtent is always the same

Hello,


 We are trying to fetch a custom column using 'FeatureSource.CustomColumnFetch' event handler.


 For that, we need to detect what is Current Zoom Level and based on that zoom level, we get the currently showing layer and calculate customer data value.


 We have multiple layers and shows layers depending on the current zoom level.


 The problem we are getting is that Map1.CurrentScale is showing as 'NaN' and Map1.CurrentExtent is returning always the same value.


 We tried to calculate current scale using the code here attached.


 



 public double GetCurrentScale()
        {
            //ShapeFileFeatureLayer stateLayer = GetStateLayer();
            //RectangleShape boundingBox = GetFullExtent(stateLayer);
            RectangleShape boundingBox = Map1.CurrentExtent;
            double resolution = Math.Max(boundingBox.Width / mapWidthInPixel, boundingBox.Height / mapHeightInPixel);
            double returnScale=0.0;

            double ratio = double.NaN;
            switch (Map1.MapUnit)
            {
                case GeographyUnit.DecimalDegree: ratio = 419976384; break;
                case GeographyUnit.Feet: ratio = 1152; break;
                case GeographyUnit.Meter: ratio = 3779.5296; break;
                //default: ratio = double.NaN;
            }

            if (!double.IsNaN(ratio))
            {
                returnScale = ratio * resolution;
            }

            return returnScale;

        }

 But since the 'Map1.CurrentExtent ' is always the same, the scale value we calculated here is always the same.

 

 I just need to know what is current zoom level the map is showing. 

 So, is there any reliable way to know it?


 


 


 



Hello shwe, 
  
 Thanks for your post and code, the code have no problem, and I have test it in how do I samples, we can get different extent each time, could you please provide a self-contained sample can recreate your problem? 
  
 Regards, 
  
 Gary

Did you try from 'CustomColumnFetch' event? I am getting problem in that event hanlder code.


I have also tried to get 'Map1.CurrentScale' from 'OnExtentChanged' event hander, too.


But, Map1.CurrentScale value in OnExtentChanged event handler is slightly different ( some decimal places) with actual drawing. I came to  notice that (by some reason i don't know), sometime, Map1.CurrentScale value has valid value (not NaN)  in 'CustomerColumnFetch' event handler and I compared these two values.


 Please note that:: We use this scale value to know the currenly showing layer of the overlay and so that we can calculate the custom colum value.


 If you have other way to know the currently showing layer from CustomColumnFetch event, please let me know, too.


thank you


shwe


 


 



Hello shwe, 
  
 Is that possible you can provide this sample? With your sample I can easily find the problem in the code or bug in the core. 
  
 And I can help you fit your requirement by your sample. 
  
 Regards, 
  
 Gary