Reputation: 3886
So, my idea of turning off the Geolocation functionality in an Openlayers 3.9.0 map is to have a toggle button that when is clicked it stops the tracking and removes the feature from the geolocation layer
geolocation.setTracking('false');
featuresOverlay.getSource().clear();
and then to turn it on again it turns the tracking on, adds a feature to the geolocation layer, sets its coordinates and re-centers the map
geolocation.setTracking('true');
featuresOverlay.getSource().addFeature(positionFeature);
var coordinates = geolocation.getPosition();
positionFeature.setGeometry(coordinates ? new ol.geom.Point(coordinates) : null);
view.setCenter(coordinates);
Well, this technically does not count as turning on/off the geolocation because it removes all the visual elements, it does not actually turns on/off the API. Is there such a possibility, or the above are enough?
Upvotes: 3
Views: 1286
Reputation: 3142
Sure it does, after one minor change.
Assuming that geolocation
in your code references an instance of ol.Geolocation
, calling geolocation.setTracking(false)
will make the geolocation
call clearWatch
on the browsers geolocation API. The relevant code is here.
However, setTracking
expects a boolean value. You send the string 'false'
, which is interpreted as a truthy value (since it's a non-empty string). Remove the quotation marks from the setTracking
paramters, and it should work as expected.
Upvotes: 4