# Class: Geolocation

This documentation is for OpenLayers v10.9.0. The latest is v.

## ol/Geolocation~Geolocation

    import Geolocation from 'ol/Geolocation.js';

Helper class for providing HTML5 Geolocation capabilities. The Geolocation API is used to locate a user's position.

To get notified of position changes and errors, register listeners for the generic `change` event and the `error` event on your instance of `Geolocation`.

Example:

    const geolocation = new Geolocation({
      // take the projection to use from the map's view
      projection: view.getProjection()
    });
    // listen to changes in position
    geolocation.on('change', function(evt) {
      console.log(geolocation.getPosition());
    });
    // listen to error
    geolocation.on('error', function(evt) {
      window.console.log(evt.message);
    });

#### new Geolocation(options)

Geolocation.js, line 120

  Name | Type | Description
  --- | --- | ---
  `tracking` | boolean (defaults to false) | Start Tracking right after instantiation.
  `trackingOptions` | PositionOptions | undefined | Tracking options. See https://www.w3.org/TR/geolocation-API/#position_options_interface.
  `projection` | ProjectionLike | undefined | The projection the position is reported in.

  ##### Fires:

  - `change` (BaseEvent) - Generic change event. Triggered when the revision counter is increased.
  - `change:accuracy` (ObjectEvent)
  - `change:accuracyGeometry` (ObjectEvent)
  - `change:altitude` (ObjectEvent)
  - `change:altitudeAccuracy` (ObjectEvent)
  - `change:heading` (ObjectEvent)
  - `change:position` (ObjectEvent)
  - `change:projection` (ObjectEvent)
  - `change:speed` (ObjectEvent)
  - `change:tracking` (ObjectEvent)
  - `change:trackingOptions` (ObjectEvent)
  - `error` (GeolocationError) - Triggered when a GeolocationPositionError occurs.
  - `error` (BaseEvent) - Generic error event. Triggered when an error occurs.
  - `propertychange` (ObjectEvent) - Triggered when a property is changed.

### Extends

- BaseObject

### Observable Properties

Name | Type | Settable | ObjectEvent type | Description
--- | --- | --- | --- | ---
`accuracy` | number | undefined | no | `change:accuracy` | The accuracy of the position measurement in meters.
`accuracyGeometry` | Polygon | no | `change:accuracygeometry` | A geometry of the position accuracy.
`altitude` | number | undefined | no | `change:altitude` | The altitude of the position in meters above mean sea level.
`altitudeAccuracy` | number | undefined | no | `change:altitudeaccuracy` | The accuracy of the altitude measurement in meters.
`heading` | number | undefined | no | `change:heading` | The heading of the device in radians from north.
`position` | Coordinate | undefined | no | `change:position` | The current position of the device reported in the current projection.
`projection` | Projection | undefined | yes | `change:projection` | The projection the position is reported in.
`speed` | number | undefined | no | `change:speed` | The instantaneous speed of the device in meters per second.
`tracking` | boolean | yes | `change:tracking` | The device location is being tracked.
`trackingOptions` | PositionOptions | undefined | yes | `change:trackingoptions` | PositionOptions as defined by the HTML5 Geolocation spec .

### Methods

#### changed() inherited

Observable.js, line 68

  Increases the revision counter and dispatches a 'change' event.

#### dispatchEvent(event){boolean | undefined} inherited

events/Target.js, line 85

  Dispatches an event and calls all listeners listening for events of this type. The event parameter can either be a string or an Object with a `type` property.

  Name | Type | Description
  --- | --- | ---
  `event` | BaseEvent | string | Event object.

  ##### Returns:

  `false` if anyone called preventDefault on the event object or if any of the listeners returned false.

#### get(key){*} inherited

Object.js, line 136

  Gets a value.

  Name | Type | Description
  --- | --- | ---
  `key` | string | Key name.

  ##### Returns:

  Value.

#### getAccuracy(){number | undefined}

Geolocation.js, line 269

  Get the accuracy of the position in meters.

  ##### Returns:

  The accuracy of the position measurement in meters.

#### getAccuracyGeometry(){Polygon}

Geolocation.js, line 279

  Get a geometry of the position accuracy.

  ##### Returns:

  A geometry of the position accuracy.

#### getAltitude(){number | undefined}

Geolocation.js, line 292

  Get the altitude associated with the position.

  ##### Returns:

  The altitude of the position in meters above mean sea level.

#### getAltitudeAccuracy(){number | undefined}

Geolocation.js, line 303

  Get the altitude accuracy of the position.

  ##### Returns:

  The accuracy of the altitude measurement in meters.

#### getHeading(){number | undefined}

Geolocation.js, line 317

  Get the heading as radians clockwise from North. Note: depending on the browser, the heading is only defined if the `enableHighAccuracy` is set to `true` in the tracking options.

  ##### Returns:

  The heading of the device in radians from north.

#### getKeys(){Array.<string>} inherited

Object.js, line 149

  Get a list of object property names.

  ##### Returns:

  List of property names.

#### getPosition(){Coordinate | undefined}

Geolocation.js, line 328

  Get the position of the device.

  ##### Returns:

  The current position of the device reported in the current projection.

#### getProjection(){Projection | undefined}

Geolocation.js, line 341

  Get the projection associated with the position.

  ##### Returns:

  The projection the position is reported in.

#### getProperties(){NoInfer.<Properties>} inherited

Object.js, line 158

  Get an object of all property names and values.

  ##### Returns:

  Object.

#### getRevision(){number} inherited

Observable.js, line 79

  Get the version number for this object. Each time the object is modified, its version number will be incremented.

  ##### Returns:

  Revision.

#### getSpeed(){number | undefined}

Geolocation.js, line 354

  Get the speed in meters per second.

  ##### Returns:

  The instantaneous speed of the device in meters per second.

#### getTracking(){boolean}

Geolocation.js, line 364

  Determine if the device location is being tracked.

  ##### Returns:

  The device location is being tracked.

#### getTrackingOptions(){PositionOptions | undefined}

Geolocation.js, line 377

  Get the tracking options. See https://www.w3.org/TR/geolocation-API/#position-options.

  ##### Returns:

  PositionOptions as defined by the HTML5 Geolocation spec .

#### on(type, listener){EventsKey | Array<EventsKey>} inherited

Observable.js, line 152

  Listen for a certain type of event.

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | The event type or array of event types.
  `listener` | function | The listener function.

  ##### Returns:

  Unique key for the listener. If called with an array of event types as the first argument, the return will be an array of keys.

#### once(type, listener){EventsKey | Array<EventsKey>} inherited

Observable.js, line 164

  Listen once for a certain type of event.

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | The event type or array of event types.
  `listener` | function | The listener function.

  ##### Returns:

  Unique key for the listener. If called with an array of event types as the first argument, the return will be an array of keys.

#### set(key, value, silent) inherited

Object.js, line 218

  Sets a value.

  Name | Type | Description
  --- | --- | ---
  `key` | string | Key name.
  `value` | * | Value.
  `silent` | boolean | undefined | Update without triggering an event.

#### setProjection(projection)

Geolocation.js, line 390

  Set the projection to use for transforming the coordinates.

  Name | Type | Description
  --- | --- | ---
  `projection` | ProjectionLike | The projection the position is reported in.

#### setProperties(values, silent) inherited

Object.js, line 238

  Sets a collection of key-value pairs. Note that this changes any existing properties and adds new ones (it does not remove any existing properties).

  Name | Type | Description
  --- | --- | ---
  `values` | Partial.<NoInfer.<Properties>> | Values.
  `silent` | boolean | undefined | Update without triggering an event.

#### setTracking(tracking)

Geolocation.js, line 400

  Enable or disable tracking.

  Name | Type | Description
  --- | --- | ---
  `tracking` | boolean | Enable tracking.

#### setTrackingOptions(options)

Geolocation.js, line 413

  Set the tracking options. See http://www.w3.org/TR/geolocation-API/#position-options.

  Name | Type | Description
  --- | --- | ---
  `options` | PositionOptions | PositionOptions as defined by the HTML5 Geolocation spec .

#### un(type, listener) inherited

Observable.js, line 173

  Unlisten for a certain type of event.

  Name | Type | Description
  --- | --- | ---
  `type` | string | Array.<string> | The event type or array of event types.
  `listener` | function | The listener function.

#### unset(key, silent) inherited

Object.js, line 262

  Unsets a property.

  Name | Type | Description
  --- | --- | ---
  `key` | string | Key name.
  `silent` | boolean | undefined | Unset without triggering an event.