function isGeoAvailable() {
"use strict";
return navigator.geolocation;
}
function setMessage(message) {
"use strict";
var geo = document.getElementById("geo");
if (geo) {
geo.innerHTML = message;
}
else {
console.log("setMessage()", message);
}
}
function getPositionMessage(position) {
"use strict";
var coords = position.coords;
var date = new Date(position.timestamp);
var message = "
Position:
\n" +
"\n" +
" - Timestamp: " + position.timestamp + " = " + date.toLocaleString() + "
\n" +
" - Accuracy: " + coords.accuracy + " meters
\n" +
" - Latitude: " + coords.latitude + "
" +
" - Longitude: " + coords.longitude + "
" +
" - Altitude: " + (coords.altitude ? coords.altitude : "unknown") + "
" +
" - Altitude Accuracy: " + (coords.altitudeAccuracy ? coords.altitudeAccuracy : 0) + "
" +
" - Heading: " + (coords.heading ? coords.heading : "unknown") + "
\n" +
" - Speed: " + (coords.speed ? coords.speed : "unknown") + "
\n"
"
\n";
return message;
}
function showPositionMessage(position) {
"use strict";
setMessage("showPositionMessage()", getPositionMessage(position));
}
function showPositionError(error) {
"use strict";
var reason;
switch (error.code) {
case error.POSITION_UNAVAILABLE:
reason = "Position unavailable";
break;
case error.PERMISSION_DENIED:
reason = "Permission denied";
break;
case error.TIMEOUT:
reason = "Timeout"
break;
default:
reason = "Unknown position error (" + error.code + ")";
break;
}
setMessage(reason + ": " + error.message);
}
if (isGeoAvailable()) {
navigator.geolocation.getCurrentPosition(showPositionMessage, showPositionError);
}
else {
setMessage('Geolocation API is not available.');
}