OpenLayers provides us with the ol.Geolocation class, which can be used to find the current location of the user and to track changes in location over time. This class accesses information provided by web browsers through the HTML 5 Geolocation API.
Limitations of the Geolocation class
Before we go any further, it's important to discuss the technology behind the Geolocation API a little bit to understand its limitations. The location of a device can be determined by several methods. Typically, we think of the location as being determined by a Global Positioning System (GPS), but in practice, the location of a device can be determined by several means, including the following:
- Public IP address: Every device that can access the Internet has a public IP address. Public IP addresses are allocated to various Internet providers in specific blocks, and so an approximate location for any device can be guessed from its public IP address. The accuracy of this guess can vary widely and might even identify the location as being in the wrong city.
- Cellular network towers: Every mobile device that connects to the Internet does so through a wireless cellular network. The device knows which network towers it is connected to, and since these towers have known locations, the location of the device can be estimated.
- GPS: A series of geostationary satellites can be used to determine the location of a device with a high degree of accuracy.
A mobile device can use any of these techniques to determine its location, and the owner of the device can choose to turn any or all of these methods off, perhaps for privacy reasons or to conserve battery power.
Using the Geolocation class
Now that we know there are limitations, let's create an example using ol.Geolocation, and then we'll provide some more details about what can be done with it. Our new example will place a marker on the map at the location reported by the Geolocation API.