var pos, current = 0, wpid = true;
output = document.querySelector( 'ul' );
navigator.geolocation.getCurrentPosition(
addto,
geoerror,
{ enableHighAccuracy: true, timeout: 27000 }
);
function geoerror( error ) {
var errors = [ 'none', 'permission denied', 'position unavailable',
'timeout' ];
output.innerHTML = '<li>Error: ' + errors[ error.code ] + '</li>';
}
function addto( o ) {
++current;
var str = '' +
'<li>Reading #: <span>' + current + '</span></li>' +
'<li>Timestamp: <span>' + o.timestamp + '</span></li>' +
'<li>Coordinates:<ul>' +
'<li>Accuracy: <span>' + o.coords.accuracy + '</span></li>' +
'<li>Altitude: <span>' + o.coords.altitude + '</span></li>' +
'<li>AltitudeAccuracy: <span>' +o.coords.altitudeAccuracy + '</span></li>' +
'<li>Heading: <span>' +o.coords.heading + '</span></li>' +
'<li>Latitude: <span>' +o.coords.latitude + '</span></li>' +
'<li>Longitude: <span>' +o.coords.longitude + '</span></li>' +
'<li>Speed: <span>' +o.coords.speed + '</span></li>' +
'</ul></li>';
if( o.address ) {
str+=''+
'<li>Address:<ul>' +
'<li>City: <span>' + o.address.city + '</span></li>' +
'<li>Country: <span>' + o.address.country + '</span></li>' +
'<li>CountryCode: <span>' +o.address.countryCode + '</span></li>' +
'<li>County: <span>' +o.address.county + '</span></li>' +
'<li>Postal Code: <span>' +o.address.postalCode + '</span></li>' +
'<li>Premises: <span>' +o.address.premises + '</span></li>' +
'<li>Street: <span>' +o.address.street + '</span></li>' +
'<li>Street Number: <span>' +o.address.streetNumber + '</span></li>' +
'</ul></li>';
}
output.innerHTML = str;
}
var b = document.querySelector( 'button' );
b.addEventListener( 'click', function( ev ) {
if( this.on ) {
this.innerHTML = 'Start watching position';
navigator.geolocation.clearWatch( wpid );
this.on = false;
} else {
this.innerHTML = 'Stop watching position';
wpid = navigator.geolocation.watchPosition(
addto,
geoerror,
{ enableHighAccuracy : true, timeout : 27000 }
);
this.on = true;
}
ev.preventDefault();
}, false );
<header><h1>Geolocation demo</h1></header>
<output>
<ul></ul>
</output>
<button>Start watching position</button>
*{margin:0;padding:0;font-size:15px;font-family:helvetica,arial,sans-serif}
footer,section,header{display:block;}
ul{padding:0.5em 1em;}
output{background:#369;color:#fff;width:300px;display:block;margin:1em;
border-radius:10px;padding:10px}
li{font-weight:bold;padding:5px 0;list-style:none}
li li{padding-top:0;}
button{margin-left:50px;width:250px;display:block;}
li span{font-weight:normal}
h1{color:#000;margin:10px 0;text-align:center;width:350px;font-family:futura,arial,sans-serif;text-transform:uppercase;}
footer{position:absolute;bottom:5px;right:5px;}
footer p,footer a{font-size:10px;color:#000}