ThinkGeo.com    |     Documentation    |     Premium Support

Changing TrackZoom KeyMask Client Side

Hello,


I'm trying to change the key mask on the track zoom.  I know I could use server side code like:


Map1.MapTools.MouseMapTool.TrackZoomMaskType = TrackZoomMaskType.None;

 


However, that does not work during a callback.  Instead, I've tried to accomplish this on the client side using OpenLayers.  I've tried the following:



    var controls = map.getControlsByClass('OpenLayers.Control.ZoomBox');
    if (controls.length > 0) {
        var zoomBox = controls[0];
        if (arg == true)
            zoomBox.keyMask = OpenLayers.Handler.MOD_NONE;
        else
            zoomBox.keyMask = OpenLayers.Handler.MOD_SHIFT;
    }

 


My problem is that map.getControlByClass('OpenLAyers.Control.ZoomBox') returns null.   Does ThinkGeo rename this class or use a special class for the track zoom control on the client side?


 


Thanks,


Joe


 


 



Hello Joseph, 



Thanks for your post and sorry for delay, the control you need to get is:


var controls = map.getControlsByClass('OpenLayers.Control.Navigation'); 

then the properties zoomBoxKeyMask and zoomBox are what you want to operate. 



Regards, 



Gary



Thanks Gary.  Works Great! 
  
 Just for reference, the final code looked like:   
  
 
    var controls = map.getControlsByClass(‘OpenLayers.Control.Navigation’);
    if (controls.length > 0) {
        var navControl = controls[0];
        if (arg == true) 
            navControl.zoomBoxKeyMask = OpenLayers.Handler.MOD_NONE;
        else 
            navControl.zoomBoxKeyMask = OpenLayers.Handler.MOD_SHIFT;

        map.removeControl(controls[0]);
        map.addControl(navControl);
 


Hello Joseph, 
  
 Thanks for share your experience, don’t hesitate to let us know your problems. 
  
 Regards, 
  
 Gary