:: StoryTitle
Geolocation in SugarCube
:: UserScript[script]
(function () {
window.geolocation = {
available: function() {
return ("geolocation" in navigator
&& typeof navigator.geolocation.getCurrentPosition === "function");
},
getLocation: function() {
// Create initial values
var location = { latitude : 0, longitude : 0 };
// Create success callback to store values
var positionSuccess = function (position) {
location.latitude = position.coords.latitude;
location.longitude = position.coords.longitude;
};
// Create error callback
var positionError = function (error) {
/* Code that handles errors */
};
// Create initial options
var positionOptions = {
timeout: 31000,
enableHighAccuracy: true,
maximumAge : 120000
};
// Ask for location based on callbacks and options
navigator.geolocation.getCurrentPosition(
positionSuccess,
positionError,
positionOptions
);
// Return location found
// If not location, will return initial (0,0) values
return location;
},
approximateLocation: function (a, b, allowedDiff) {
// allowedDiff must always be > 0
if (a === b) { // handles various "exact" edge cases
return true;
}
allowedDiff = allowedDiff || 0.0005;
return Math.abs(a - b) < allowedDiff;
}
};
}());
:: Start
<>
<>
[[Show results]]
<>
:: Show results
<>
Is geolocation available? $geoLocationAvailable
If so, what is the current location?
Latitude: $location.latitude
Longitude: $location.longitude
Are we in the approximate location of Stonehenge (51.1788853, -1.828409)?
<>
<>
Latitude: $approxLat
Longitude: $approxLong