GEOLOCATION BASICS Five Methods Cell Tower Triangulation or
GEOLOCATION
BASICS
• Five Methods • Cell Tower Triangulation or Trilateration • 1 – X Towers Used (Accuracy Varies) ~3000 m • Quick Startup and lower power consumption • No sky view required • GPS • • • 4 - X Satellites Used of 24 available Slower startup and higher battery consumption Sky view required Better Accuracy ~3 m Elevation Possible
• Wi fi Triangulation • • • Requires Wi fi Access Higher Battery Consumption IP Lookup Requires IP Access Can be very inaccurate • A-GPS • Combination of GPS and Land Based System • Altitude Accuracy
PRIVACY
• Prompt for every domain • Cannot bypass via code • Non modal and tab specific • Allow, Don’t Allow and Remember • Errors are handled in the error callback
ERROR HANDLING
• Handled in Error Callback • Code • • PERMISSION_DENIED (1) POSITION_UNAVAILABLE (2) TIMEOUT (3) UNKNOWN_ERROR (0) • Message
• get. Current. Position(function, error_function, options) • • • Latitude, longitude, altitude (optional) Accuracy Altitude Accuracy(optional) Heading (optional) Speed (optional) timestamp
• Javascript object • • enable. High. Accuracy Can fail on some phones due to permission Timeout (After permission is handled) maximum. Age (caching)
function get_position() { var s = document. query. Selector('#status'); s. inner. HTML = "Checking for your location"; if (navigator. geolocation) { navigator. geolocation. get. Current. Position(success_callb ack, error_callback); } else { alert("No Geo-location Support. "); } } function error_callback(position. Error) { alert("Error" + position. Error. code + " Message "+ position. Error. message); }
function success_callback(position) { var latitude = position. coords. latitude; var longitude = position. coords. longitude; var elevation = position. coords. altitude; var accuracy = position. coords. accuracy; var altitude. Accuracy = position. coords. altitude. Accuracy; var heading = position. coords. heading; var speed = position. coords. speed; var timestamp = position. timestamp; }
function get_accurate_position() { if (navigator. geolocation) { var options = { enable. High. Accuracy: true, timeout: 20000, maximum. Age: 300000}; navigator. geolocation. get. Current. Position(success_callback, error_callback, options); } else { alert("No Geo-location Support. Falling back to Gears"); } }
• Watch Position • • • Same call as get. Position Returns a number that should be stored Returns position when location changes Device determines sample interval Use number to stop watching Clear. Watch(number)
• Sample Code function watch_position() { if (navigator. geolocation) { watch. Number = navigator. geolocation. watch. Position (success_callback, error_callback); } else { alert("No Geo-location Support. Falling back to Gears"); } local. Storage. set. Item("watch", watch. Number); }
function stop_watch(){ var watch. Number = local. Storage. get. Item("watch"); navigator. geolocation. clear. Watch(watch. Number); }
- Slides: 16