ThinkGeo.com    |     Documentation    |     Premium Support

Zoom level bar slider and minimum/maximum scale

Hi,


When i set the maximum scale to zoomlevel x and the minimum scale to zoomlevel y, the user can still move the zoom level bar slider thumb outside this range which is i guess ok.


But the slider doesn't automatically move his thumb to the max or min zoom level of the range after the user stop moving the slider thumb.


Is there a way to achieve this behaviour ? or is there a way to disable the slider ?


Thanks,


P.OM



Hi Puthirak,


Please check the following answers for your questions.


1. Is there a way to achieve this behaviour ?


You can use your own ZoomLevelSet to customize the PanZoomBar (for example, limit it from 3~15)


ZoomLevelSet zoomLevelSet = new ZoomLevelSet();
for (int i = 3; i <= 15; i++)
{
    ZoomLevel level = new ZoomLevel(Map1.ZoomLevelScales[i]);
    zoomLevelSet.CustomZoomLevels.Add(level);
}
Map1.ZoomLevelSet = zoomLevelSet;


2. or is there a way to disable the slider ?


Currently we can't disable the slider only, but you can use the following code to disable the PanZoomBar


Map1.MapTools.PanZoomBar.IsEnabled = false;


Regards,


Ivan



Hi Ivan,


Thanks for your answers.


For Q1: Unfortunately, i still want to see all the 20 zoom levels. I just want to limit the zoom movement for a certain range...


For Q2: I was aware of this solution... but i don't want to hide the panzoombar.


So i guess my only option is to have my own panzoombar.


Thanks,


P.OM



Hi Puthirak,


 
You can also use the CurrentScaleChanging event to work around.  The idea is to cancel the zoom movement by checking new scale is out of your expected range or not.
 
Hook up the event:


winformsMap1.CurrentScaleChanging += new EventHandler<CurrentScaleChangingWinformsMapEventArgs>(winformsMap1_CurrentScaleChanging);



void winformsMap1_CurrentScaleChanging(object sender, CurrentScaleChangingWinformsMapEventArgs e)
{
    if (e.NewScale < winformsMap1.ZoomLevelSet.ZoomLevel04.Scale
        && e.NewScale > winformsMap1.ZoomLevelSet.ZoomLevel20.Scale)
    {
        e.Cancel = false;
    }
    else
    {
        e.Cancel = true;
    }
}


Hope this helps.

Thanks,


Lee



Hi Lee,


Thank you for your suggestion.


I tried your suggestion but this event is not fired when the scale is changed by using the slider of the panzoombar.


Also, specifying the MinimumScale and MaximumScale is enough to handle the change of the scale by the mouse. There's no need to handle this event.


Thank you again,


P.OM



Hi Puthirak, 



I have modified the behavior of PanZoomBarMapTool to support this new feature ("automatically move the thumb to the max or min zoom level of the range after the user stop moving the slider thumb"). Please get the latest daily build (5.0.0.5 or later) to have another try. 



Regards, 



Ivan



Hi Ivan,


I cannot find the daily dev build for the 5.0 version...


Thanks,


P.OM



Hi Puthirak, 
 The 5.0 daily build is not ready yet, it will be available later this week or next week. 
  
 Thanks, 
 Lee 


Ok.


Thanks,


P.OM



You are welcome!