HTML5 Location Services

by chad

HTML

<script src="https://www.google.com/jsapi"></script>
<script type="text/javascript" src="https://www.google.com/jsapi"></script>
Get Location:
<ul>
    <li><a href="#" class="location_services">Location Services</a></li>
    <li><a href="#" class="location_ip">Google IP Geolocation</a></li>
</ul>
<div class="results"></div>
<div class="zip"></div>

JavaScript

var LocationServices = {
}
function getLocationServices() {
    if (navigator.geolocation) {
      var timeoutVal = 10 * 1000 * 1000;
      navigator.geolocation.getCurrentPosition(
        displayPosition, 
        displayError,
        { enableHighAccuracy: true, timeout: timeoutVal, maximumAge: 0 }
      );
    }
    else {
      alert('Geolocation is not supported by this browser');
    }
}

function getLocationIP() {
    // console.log(google);
    var loc = {};
    if(google.loader.ClientLocation) {
        loc.lat = google.loader.ClientLocation.latitude;
        loc.lng = google.loader.ClientLocation.longitude;
        var position = {
            coords: {
                latitude: loc.lat,
                longitude: loc.lng
            }
        }
        displayPosition(position);
    } else {
        alert('IP Geolocation failed');
    }
}

function displayPosition(position) {
  $('.results').html('Latitude: ' + position.coords.latitude + ', Longitude: ' + position.coords.longitude);
  displayZip(position.coords.latitude,position.coords.longitude);
}

function displayZip(latitude,longitude) {
    $.getJSON('http://maps.googleapis.com/maps/api/geocode/json?latlng='+latitude+','+longitude+'&sensor=true', function(data){
        //console.log(data);
        var zipcode = data.results[0].address_components[7].short_name;
        $('.zip').html('Zip: '+zipcode);
    });
}
           
function displayError(error) {
  var errors = { 
    1: 'Permission denied',
    2: 'Position unavailable',
    3: 'Request timeout'
  };
  alert("Error: " + errors[error.code]);
}

$(document).ready(function(){

    $('.location_services').on('click',function(){
        event.preventDefault();
        getLocationServices();
    });
    $('.location_ip').on('click',function(){
        event.preventDefault();
        getLocationIP();
    });
    
});