diff --git a/lib/OpenLayers/Control/Geolocate.js b/lib/OpenLayers/Control/Geolocate.js index 7fb7f534f2..6745ab7595 100644 --- a/lib/OpenLayers/Control/Geolocate.js +++ b/lib/OpenLayers/Control/Geolocate.js @@ -73,6 +73,14 @@ OpenLayers.Control.Geolocate = OpenLayers.Class(OpenLayers.Control, { OpenLayers.Control.prototype.initialize.apply(this, [options]); }, + /** + * Method: destroy + */ + destroy: function() { + this.deactivate(); + OpenLayers.Control.prototype.destroy.apply(this, arguments); + }, + /** * Method: activate * Activates the control. diff --git a/tests/Control/Geolocate.html b/tests/Control/Geolocate.html index d65bbdd3d2..541342076e 100644 --- a/tests/Control/Geolocate.html +++ b/tests/Control/Geolocate.html @@ -113,6 +113,17 @@ map.addControl(control); control.activate(); } + function test_destroy(t) { + t.plan(1); + var control = new OpenLayers.Control.Geolocate({ + geolocation: geolocation, + watch: true + }); + control.activate(); + control.destroy(); + t.ok(control.active === false, "control deactivated before being destroyed"); + } + function loader() { map = new OpenLayers.Map('map'); var layer = new OpenLayers.Layer.WMS("Test Layer",