Adding getCurrentLocation API method so that application can get the location anytime, p=aabt, r=elemoine, (Closes #3090)

git-svn-id: http://svn.openlayers.org/trunk/openlayers@11315 dc9f47b5-9b13-0410-9fdd-eb0c1a62fdaf
This commit is contained in:
pgiraud
2011-02-23 13:33:14 +00:00
parent f55291bd34
commit 61452e2821
2 changed files with 48 additions and 9 deletions

View File

@@ -85,7 +85,7 @@ OpenLayers.Control.Geolocate = OpenLayers.Class(OpenLayers.Control, {
this.events.triggerEvent("locationuncapable");
return false;
}
if (!this.active) {
if (OpenLayers.Control.prototype.activate.apply(this, arguments)) {
if (this.watch) {
this.watchId = this.geolocation.watchPosition(
OpenLayers.Function.bind(this.geolocate, this),
@@ -93,16 +93,11 @@ OpenLayers.Control.Geolocate = OpenLayers.Class(OpenLayers.Control, {
this.geolocationOptions
);
} else {
this.geolocation.getCurrentPosition(
OpenLayers.Function.bind(this.geolocate, this),
OpenLayers.Function.bind(this.failure, this),
this.geolocationOptions
);
this.getCurrentLocation();
}
return true;
}
return OpenLayers.Control.prototype.activate.apply(
this, arguments
);
return false;
},
/**
@@ -145,6 +140,25 @@ OpenLayers.Control.Geolocate = OpenLayers.Class(OpenLayers.Control, {
});
},
/**
* APIMethod: getCurrentLocation
*
* Returns:
* {Boolean} Returns true if a event will be fired (successfull
* registration)
*/
getCurrentLocation: function() {
if (!this.active || this.watch) {
return false;
}
this.geolocation.getCurrentPosition(
OpenLayers.Function.bind(this.geolocate, this),
OpenLayers.Function.bind(this.failure, this),
this.geolocationOptions
);
return true;
},
/**
* Method: failure
* method called on browser's geolocation failure