ThinkGeo.com    |     Documentation    |     Premium Support

Override MapTools.PanZoomBar globe icon functionality

Hello,


Is there a way to override the MapTools.PanZoomBar globe icon functionality (override the onclick event) either by code behid or JavaScript ?


I'd like it to zoom and pan back to the initial Page_Load zoom (kind of "back to home").

I was thinking of implementing that by saving the intitial ThinkGeoMap.CurrentExtent and retrieving it on globe click.


Thanks,

Runny



Runny, 
  
 Currently, we are researching the functinality for you, if there are any updates we will let you know, 
  
 Thanks, 
  
 Scott,

Thank you for the quick reply Scott, 
  
 I’ll use a temporary button for now. 
  
 Runny

Runny, 
  
 For your requirements we have to override the OpenLayers’ APIs so that we can change the PanZoomBar’s behaviors, we have added this new feature to our issue list, if there are any updates we will let you know, 
  
 Thanks, 
  
 Scott,

Scott, 
  
 Thank you very much. 
 Looking forward to the new updates. 
  
 Runny

Runny, 
  
 Your issue were added our issue list and when we are available we will research your requirement, if there are any updates I will let you know, 
  
 Thanks, 
  
 Scott,

Hi,



I’d also like to see this functionality.   Do you have any updates on how this could be implemented (or when it might be part of a release)?



In my case, I want to override the globe click so that I can set the map extent to a particular layers bounding box.   I guess I could add another control to my view to do this, but it would be nice to have it as part of the globe click



Thanks,

Steve

Hi Steve, 
 Currently, we don’t such Api for the PanZoomBar. But here is a way we can override it and custom the functions: 
  
<script type="text/javascript">
        OnMapCreating = function (map) {
            OpenLayers.Control.PanZoom.prototype.buttonDown = function (evt) {
                if (!OpenLayers.Event.isLeftClick(evt)) {
                    return;
                }

                switch (this.action) {
                    case "panup":
                        this.map.pan(0, -this.getSlideFactor("h"));
                        break;
                    case "pandown":
                        this.map.pan(0, this.getSlideFactor("h"));
                        break;
                    case "panleft":
                        this.map.pan(-this.getSlideFactor("w"), 0);
                        break;
                    case "panright":
                        this.map.pan(this.getSlideFactor("w"), 0);
                        break;
                    case "zoomin":
                        this.map.zoomIn();
                        break;
                    case "zoomout":
                        this.map.zoomOut();
                        break;
                    case "zoomworld":
                        alert("zoomworld click");
                        break;
                }

                OpenLayers.Event.stop(evt);
            }
        }
    </script>
 
  
 Please let us know if it is not fit for you. 
 Best regards, 
 Johnny

Hi Johnny,

That looks like it would work well - but I am using the MVC control - which doesnt seem to have the OnMapCreating event.

Thanks,

Steve

Hi Steve, 



I have test those codes in Mvc but they work fine. Actually, the web and mvc edition are sharing the same Api in client. 

Would you please clear any caches in browser and test it again. 



if still the issue persists, please let us know which version you are using? 



Thanks, 

Johnny

My apologies.  I’d done something wrong setting this up when I tested it.   Its all working now, thanks.

Hi Steve, 
  
 Great to hear it is sorted out, if you have any more question, please feel free to let us know. 
  
 Best Regards 
  
 Summer