Wednesday, 14 November 2018

Setting custom center and zoom level for Zoom World icon in OpenLayers 2?


OpenLayers Zoom Pan Control has a Zoom World Icon. When it is clicked the map zooms all the way out.


Is it possible to override this behavior and define a center and zoom level to which the map should be reset?


My Base Map is Bing Map



Answer




In order to do this without modifying the actual source code for openlayers (which you won't be doing if you're using a minified version, which by default you probably are), look at this answer.


However, I had to change it slightly for my code, which is using OpenLayers 2.11


OpenLayers.Control.PanZoom.prototype.buttonDown = function(evt) {
var btn = evt.currentTarget ? evt.currentTarget : this;
switch (btn.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("Hello world!");
break;
}
};

The only difference between this code and the one in the answer linked is that instead of onButtonClick, we're using buttonDown, and rather than evt.buttonElement, we're using evt.currentTarget



EDIT: Internet Explorer has no currentTarget property in their event handling. Luckily, we can use this instead. I have modified the code above accordingly. For an explanation of this, please see this article. A relevant stackoverflow question is here.


No comments:

Post a Comment

arcpy - Changing output name when exporting data driven pages to JPG?

Is there a way to save the output JPG, changing the output file name to the page name, instead of page number? I mean changing the script fo...