+++ /dev/null
-/* Copyright (c) 2006 MetaCarta, Inc., published under the BSD license.
- * See http://svn.openlayers.org/trunk/openlayers/license.txt for the full
- * text of the license. */
-// @require: OpenLayers/Control.js
-
-/**
- * @class
- *
- * default zoom/pan controls
- */
-OpenLayers.Control.PanZoom = Class.create();
-OpenLayers.Control.PanZoom.X = 4;
-OpenLayers.Control.PanZoom.Y = 4;
-OpenLayers.Control.PanZoom.prototype =
- Object.extend( new OpenLayers.Control(), {
-
- /** @type int */
- slideFactor: 50,
-
- /** @type Array of Button Divs */
- buttons: null,
-
- /** @type OpenLayers.Pixel */
- position: null,
-
- /**
- * @constructor
- */
- initialize: function() {
- OpenLayers.Control.prototype.initialize.apply(this, arguments);
- this.position = new OpenLayers.Pixel(OpenLayers.Control.PanZoom.X,
- OpenLayers.Control.PanZoom.Y);
- },
-
- /**
- * @param {OpenLayers.Pixel} px
- *
- * @returns A reference to the container div for the PanZoom control
- * @type DOMElement
- */
- draw: function(px) {
- // initialize our internal div
- OpenLayers.Control.prototype.draw.apply(this, arguments);
- px = this.position;
-
- // place the controls
- this.buttons = new Array();
-
- var sz = new OpenLayers.Size(18,18);
- var centered = new OpenLayers.Pixel(px.x+sz.w/2, px.y);
-
- this._addButton("panup", "north-mini.png", centered, sz);
- px.y = centered.y+sz.h;
- this._addButton("panleft", "west-mini.png", px, sz);
- this._addButton("panright", "east-mini.png", px.add(sz.w, 0), sz);
- this._addButton("pandown", "south-mini.png",
- centered.add(0, sz.h*2), sz);
- this._addButton("zoomin", "zoom-plus-mini.png",
- centered.add(0, sz.h*3+5), sz);
- this._addButton("zoomworld", "zoom-world-mini.png",
- centered.add(0, sz.h*4+5), sz);
- this._addButton("zoomout", "zoom-minus-mini.png",
- centered.add(0, sz.h*5+5), sz);
- return this.div;
- },
-
- /**
- * @param {String} id
- * @param {String} img
- * @param {OpenLayers.Pixel} xy
- * @param {OpenLayers.Size} sz
- *
- * @returns A Div (an alphaImageDiv, to be precise) that contains the
- * image of the button, and has all the proper event handlers
- * set.
- * @type DOMElement
- */
- _addButton:function(id, img, xy, sz) {
- var imgLocation = OpenLayers.Util.getImagesLocation() + img;
- // var btn = new ol.AlphaImage("_"+id, imgLocation, xy, sz);
- var btn = OpenLayers.Util.createAlphaImageDiv(
- "OpenLayers_Control_PanZoom_" + id,
- xy, sz, imgLocation, "absolute");
-
- //we want to add the outer div
- this.div.appendChild(btn);
-
- btn.onmousedown = this.buttonDown.bindAsEventListener(btn);
- btn.ondblclick = this.doubleClick.bindAsEventListener(btn);
- btn.onclick = this.doubleClick.bindAsEventListener(btn);
- btn.action = id;
- btn.map = this.map;
- btn.slideFactor = this.slideFactor;
-
- //we want to remember/reference the outer div
- this.buttons.push(btn);
- return btn;
- },
-
- /**
- * @param {event} evt
- *
- * @type Boolean
- */
- doubleClick: function (evt) {
- Event.stop(evt);
- return false;
- },
-
- /**
- * @param {event} evt
- */
- buttonDown: function (evt) {
- if (!Event.isLeftClick(evt)) return;
-
- var slide = this.map.getResolution() * this.slideFactor;
- var center = this.map.getCenter();
-
- var newCenter = center.copyOf();
-
- switch (this.action) {
- case "panup":
- newCenter = newCenter.add( 0, slide);
- break;
- case "pandown":
- newCenter = newCenter.add( 0, -slide);
- break;
- case "panleft":
- newCenter = newCenter.add( -slide, 0);
- break;
- case "panright":
- newCenter = newCenter.add( slide, 0);
- break;
- case "zoomin":
- this.map.zoomIn();
- break;
- case "zoomout":
- this.map.zoomOut();
- break;
- case "zoomworld":
- this.map.zoomToFullExtent();
- break;
- }
-
- if (!newCenter.equals(center)) {
- this.map.setCenter(newCenter);
- }
-
- Event.stop(evt);
- },
-
- /**
- *
- */
- destroy: function() {
- OpenLayers.Control.prototype.destroy.apply(this, arguments);
- for(i=0; i<this.buttons.length; i++) {
- this.buttons[i].map = null;
- }
- },
-
- /** @final @type String */
- CLASS_NAME: "OpenLayers.Control.PanZoom"
-});