12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- /**
- * A wrapper around HTML5 Geolocation with helper methods.
- *
- * @constructor
- */
- function Geo() {
- "use strict";
- /**
- * @type {Geolocation}
- */
- var geo = navigator.geolocation;
- this.getGeo = function () {
- return geo;
- };
- /**
- *
- * @param {MessageElement} area
- */
- this.showLocation = function (area) {
- var that = this;
- geo.getCurrentPosition(
- function (position) {
- area.set(that.getPositionMessage(position));
- },
- function (error) {
- area.set(that.getPositionError(error));
- }
- );
- };
- /**
- * Build a string representation of a Geolocation PositionError.
- *
- * @param {PositionError} error
- *
- * @returns {*}
- */
- this.getPositionError = function(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;
- }
- var ret = reason + ": " + error.message;
- return ret;
- };
- /**
- * Build a HTML-formatted representation of a position information.
- *
- * @param {Position} position
- * @returns {string}
- */
- this.getPositionMessage = function (position) {
- /**
- * @type {Coordinates}
- */
- var coords = position.coords;
- var date = new Date(position.timestamp);
- var message = "<p>Position: </p>\n" +
- "<ul>\n" +
- " <li>Timestamp: " + position.timestamp + " = " + date.toLocaleString() + "</li>\n" +
- " <li>Accuracy: " + coords.accuracy + " meters</li>\n" +
- " <li>Latitude: " + coords.latitude + "</li>" +
- " <li>Longitude: " + coords.longitude + "</li>" +
- " <li>Altitude: " + (coords.altitude ? coords.altitude : "unknown") + "</li>" +
- " <li>Altitude Accuracy: " + (coords.altitudeAccuracy ? coords.altitudeAccuracy : 0) + "</li>" +
- " <li>Heading: " + (coords.heading ? coords.heading : "unknown") + "</li>\n" +
- " <li>Speed: " + (coords.speed ? coords.speed : "unknown") + "</li>\n" +
- " </ul>\n";
- return message;
- };
- this.init = function () {
- geo = navigator.geolocation || false;
- };
- this.init();
- }
|