W3C Geolocation API

From Wikipedia, the free encyclopedia
Jump to: navigation, search

The W3C Geolocation API is an effort by the World Wide Web Consortium (W3C) to standardize an interface to retrieve the geographical location information for a client-side device.[1] It defines a set of objects, ECMAScript standard compliant, that executing in the client application give the client's device location through the consulting of Location Information Servers, which are transparent for the application programming interface (API). The most common sources of location information are IP address, Wi-Fi and Bluetooth MAC address, radio-frequency identification (RFID), Wi-Fi connection location, or device Global Positioning System (GPS) and GSM/CDMA cell IDs. The location is returned with a given accuracy depending on the best location information source available.

Deployment in web browsers[edit]

Web pages can use the Geolocation API directly if the web browser implements it. Historically, some browsers could gain support via the Google Gears plugin, but this was discontinued in 2010 and the server-side API it depended on stopped responding in 2012.[2][3]

The Geolocation API is ideally suited to web applications for mobile devices such as personal digital assistants (PDA) and smartphones. On desktop computers, the W3C Geolocation API works in Firefox since version 3.5, Google Chrome,[4] Opera 10.6,[5] Internet Explorer 9.0,[6] and Safari 5. On mobile devices, it works on Android (firmware 2.0+), iOS, Windows Phone and Maemo. The W3C Geolocation API is also supported by Opera Mobile 10.1 — available for Android and Symbian devices (S60 generations 3 & 5) since November 24, 2010.[7]

Google Gears provided geolocation support for older and non-compliant browsers, including Internet Explorer 7.0+ as a Gears plugin, and Google Chrome which implemented Gears natively. It also supported geolocation on mobile devices as a plugin for the Android browser (pre version 2.0) and Opera Mobile for Windows Mobile. However, the Google Gears Geolocation API is incompatible with the W3C Geolocation API and is no longer supported.

Features[edit]

The result of W3C Geolocation API will usually give 4 location properties, including latitude and longitude (coordinates), altitude (height), and accuracy of the position gathered. Depends on the location sources, in some cases, the altitude doesn't shows.

Location Sources[edit]

What should be noted is, that Geolocation API didn't really provide the location information. The location information is obtained by your device (smartphone / PC / modem), which then served by the API to be brought in browser. Usually geolocation will try to determine your position using one of these several ways. These number, show the ordered devices about what Geolocation will try to give your location. The lower, the less accurate the information.[8]

GPS (Global Positioning System) This happen for smartphone / anything which has GPS inside. If you have smartphone with GPS capabilities and set to high accuracy mode, you'll likely to obtain the location data from this. GPS calculate location information from GPS satelite signal. It has the highest accuracy. In most Android smartphone, the accuracy can be up to 10 metres.

Mobile Network Location This happen if you use a cellphone or wireless modem without GPS chip built in it. Please refer to Mobile Phone Tracking to see how it works.

WiFi Positioning System If you are indoor, and using Wifi, this is the likely you'll get. Some WiFi have location services capabilities. To see how it works, please refer to WiFi Positioning System

IP Address Location This one will detects your location based on nearest Public IP Address on your devices, (can be your computer, or the router, or your ISP provider). Depend on the IP information available, but in many case where the IP is hidden behind Internet Service Provider NAT, the accuracy is in level of city, region, or even country.

Implementation[edit]

Though the implementation is not specified, W3C Geolocation API is built on extant technologies, and is heavily influenced by Google Gears Geolocation API. Example: Firefox's Geolocation implementation[9] uses Google's network location provider.[10]

Google Gears Geolocation works by sending a set of parameters that could give a hint as to where the user's physical location is to a network location provider server, which is by default the one provided by Google (code.l.google.com).[11] Some of the parameters are lists of sensed mobile cell towers and Wi-Fi networks, all with sensed signal strengths. These parameters are encapsulated into a JavaScript Object Notation (JSON) message and sent to the network location provider via HTTP POST. Based on these parameters, the network location provider can calculate the location. Common uses for this location information include enforcing access controls, localizing and customizing content, analyzing traffic, contextual advertising and preventing identity theft.[12]

Example code[edit]

Simple JavaScript code that checks if the browser has the Geolocation API implemented and then uses it to get the current position of the device. this code creates a function which can be called on html using <body onload="geoFindMe()">:

function geoFindMe() {
    if(navigator.geolocation) {
        navigator.geolocation.getCurrentPosition(success, error, geoOptions);
    } else {
        alert("Geolocation services are not supported by your web browser.");
    }
}

function success(position) {
    var latitude = position.coords.latitude;
    var longitude = position.coords.longitude;
    var altitude = position.coords.altitude;
    var accuracy = position.coords.accuracy;
    alert("lat: " + latitude + " long: " + longitude);
}

function error(error) {
    alert("Unable to retrieve your location due to " + error.code + ": " + error.message);
}

var geoOptions = {
    enableHighAccuracy: true,
    maximumAge: 30000,
    timeout: 27000
};

See also[edit]

References[edit]

  1. How to Implement a W3C Geolocation API in Javascript
  2. Where Am I - an W3C Geolocation displayed on Google Maps

External links[edit]