diff --git a/examples/controls.html b/examples/controls.html index 0c4ea4d157..69cc598779 100644 --- a/examples/controls.html +++ b/examples/controls.html @@ -34,8 +34,8 @@ map.addControl(new OpenLayers.Control.PanZoomBar()); map.addControl(new OpenLayers.Control.MouseToolbar()); map.addControl(new OpenLayers.Control.LayerSwitcher()); + map.addControl(new OpenLayers.Control.Permalink()); map.addControl(new OpenLayers.Control.Permalink($('permalink'))); - // map.setCenter(new OpenLayers.LonLat(0, 0), 0); if (!map.getCenter()) map.zoomToMaxExtent(); } // --> @@ -43,7 +43,7 @@

OpenLayers Example

-
+
diff --git a/lib/OpenLayers/Control/Permalink.js b/lib/OpenLayers/Control/Permalink.js index ab7798f6f7..d88094b102 100644 --- a/lib/OpenLayers/Control/Permalink.js +++ b/lib/OpenLayers/Control/Permalink.js @@ -17,7 +17,7 @@ OpenLayers.Control.Permalink.prototype = }, draw: function() { - this.map.events.register( 'moveend', this, this.updateLink); + OpenLayers.Control.prototype.draw.apply(this, arguments); var args = this.getArgs(); if (args.lat && args.lon) { this.map.setCenter( @@ -27,6 +27,21 @@ OpenLayers.Control.Permalink.prototype = if (args.zoom) { this.map.zoomTo(parseInt(args.zoom)); } + if (!this.element) { + this.element = document.createElement("a"); + this.div.style.right = "3px"; + this.div.style.bottom = "3px"; + this.div.style.left = ""; + this.div.style.top = ""; + this.div.style.display = "block"; + this.div.style.position = "absolute"; + this.element.style.fontSize="smaller"; + this.element.innerHTML = "Permalink"; + this.element.href=""; + this.div.appendChild(this.element); + } + this.map.events.register( 'moveend', this, this.updateLink); + return this.div; }, getArgs: function() { diff --git a/tests/test_Control_Permalink.html b/tests/test_Control_Permalink.html index 5aebab512d..1d7f64a338 100644 --- a/tests/test_Control_Permalink.html +++ b/tests/test_Control_Permalink.html @@ -36,6 +36,14 @@ $('edit_permalink').href = './edit.html?lat=0&lon=1.75781&zoom=2'; t.eq($('permalink').href, $('edit_permalink').href, "Panning sets permalink with base"); } + function test_03_Control_Permalink_noElement (t) { + t.plan( 2 ); + control = new OpenLayers.Control.Permalink( ); + t.ok( control instanceof OpenLayers.Control.Permalink, "new OpenLayers.Control returns object" ); + map = new OpenLayers.Map($('map')); + map.addControl(control); + t.eq(map.controls[2].div.firstChild.nodeName, "A", "Permalink control creates div with 'a' inside." ); + } // -->