<!--
{
  "availability" : [
    "iOS: 14.0.0 -",
    "iPadOS: 14.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "ARKit",
  "identifier" : "/documentation/ARKit/ARGeoTrackingConfiguration",
  "metadataVersion" : "0.1.0",
  "role" : "Class",
  "symbol" : {
    "kind" : "Class",
    "modules" : [
      "ARKit"
    ],
    "preciseIdentifier" : "c:objc(cs)ARGeoTrackingConfiguration"
  },
  "title" : "ARGeoTrackingConfiguration"
}
-->

# ARGeoTrackingConfiguration

A configuration that tracks locations with GPS, map data, and a device’s compass.

```
class ARGeoTrackingConfiguration
```

## Overview

This configuration creates location anchors ([`ARGeoAnchor`](/documentation/ARKit/ARGeoAnchor)) that specify a particular latitude, longitude, and optionally, altitude to enable an app to track geographic areas of interest in an AR experience.

> Important:
> The ``doc://com.apple.arkit/documentation/ARKit/ARConfiguration/isSupported`` property returns <doc://com.apple.documentation/documentation/Swift/true> for this class on iOS 14 & iPadOS 14 devices that have an A12 chip or later and cellular (GPS) capability. Geotracking is available in specific geographic locations. To determine availability at the user’s location at runtime, call ``doc://com.apple.arkit/documentation/ARKit/ARGeoTrackingConfiguration/checkAvailability(completionHandler:)``.

Geotracking occurs exclusively outdoors. If a geotracking app navigates users between waypoints, your app needs to handle any events along a route. The user must have an internet connection, and you can provide them information about data usage, as described in [`ARGeoAnchor`](/documentation/ARKit/ARGeoAnchor).

### Encourage user safety

To keep your users’ focus on the road while traveling, discourage them from looking at the device when in motion, such as while riding a bike. Keep users informed when navigating through unfamiliar territory. For instance, you can recommend they steer clear of private property, or remind them to check their device’s battery level before beginning a long route.

### Refine the user’s position with imagery

To place location anchors with precision, geotracking requires a better understanding of the user’s geographic location than is possible with GPS alone. Based on the user’s GPS coordinates, ARKit downloads imagery that depicts the physical environment in that area. Apple collects this *localization imagery* in advance by capturing photos of the view from the street and recording the geographic position at each photo. By comparing the device’s current camera image with this imagery, the session matches the user’s precise geographic location with the scene’s local coordinates. For information about the user’s position in local space, see [`transform`](/documentation/ARKit/ARCamera/transform).

Localization imagery captures views from public streets and routes accessible by car, but doesn’t include images of gated or pedestrian-only areas.

Geotracking sessions use localization imagery in the [`ARGeoTrackingStatus.State.localizing`](/documentation/ARKit/ARGeoTrackingStatus/State-swift.enum/localizing) state.

### Supported areas and cities

Localization imagery is available for specific areas in over 20 countries, including many metropolitan areas in Australia, Europe, Japan, and North America.
To check availability in a particular location, see the [`checkAvailability(completionHandler:)`](/documentation/ARKit/ARGeoTrackingConfiguration/checkAvailability(completionHandler:)) function.

> Tip:
> You can share an experience of geotracking with developers who live outside an area that supports it. Record a session in your app in an area that supports localization imagery for developers to create and test their geotracking app. For more information, see <doc://com.apple.arkit/documentation/ARKit/recording-and-replaying-ar-session-data>.

## Topics

### Creating a configuration

[`+  new`](/documentation/ARKit/ARGeoTrackingConfiguration/new)

Instantiates a new geotracking configuration.

[`-  init`](/documentation/ARKit/ARGeoTrackingConfiguration/init())

Initializes a new geotracking configuration.

### Checking availability

[`+  checkAvailabilityWithCompletionHandler:`](/documentation/ARKit/ARGeoTrackingConfiguration/checkAvailability(completionHandler:))

Determines if geotracking supports the user’s current location.

[`+  checkAvailabilityAtCoordinate:completionHandler:`](/documentation/ARKit/ARGeoTrackingConfiguration/checkAvailability(at:completionHandler:))

Determines if geotracking supports a particular location.

### Tracking surfaces

[`planeDetection`](/documentation/ARKit/ARGeoTrackingConfiguration/planeDetection)

A value that specifies whether and how the session automatically attempts to detect flat surfaces in the camera-captured image.

[`PlaneDetection`](/documentation/ARKit/ARWorldTrackingConfiguration/PlaneDetection-swift.struct)

Options for whether and how the framework detects flat surfaces in captured images.

### Detecting or tracking images

[`detectionImages`](/documentation/ARKit/ARGeoTrackingConfiguration/detectionImages)

A set of images that ARKit searches for in the user’s environment.

[`maximumNumberOfTrackedImages`](/documentation/ARKit/ARGeoTrackingConfiguration/maximumNumberOfTrackedImages)

The number of image anchors to monitor closely for position and orientation updates.

[`automaticImageScaleEstimationEnabled`](/documentation/ARKit/ARGeoTrackingConfiguration/automaticImageScaleEstimationEnabled)

A flag that instructs the framework to estimate and set the scale of a detected or tracked image on your behalf.

### Detecting and tracking real-world objects

[`detectionObjects`](/documentation/ARKit/ARGeoTrackingConfiguration/detectionObjects)

A set of 3D objects that the framework attempts to detect in the user’s environment.

[`trackingObjects`](/documentation/ARKit/ARGeoTrackingConfiguration/trackingObjects)

Objects to track in the scene.

### Creating realistic reflections

[`environmentTexturing`](/documentation/ARKit/ARGeoTrackingConfiguration/environmentTexturing)

An option that determines how the framework generates environment textures.

[`EnvironmentTexturing`](/documentation/ARKit/ARWorldTrackingConfiguration/EnvironmentTexturing-swift.enum)

The available environment texturing options for world tracking.

[`AREnvironmentProbeAnchor`](/documentation/ARKit/AREnvironmentProbeAnchor)

An object that provides environmental lighting information for a specific area of space in a world-tracking AR session.

[`wantsHDREnvironmentTextures`](/documentation/ARKit/ARGeoTrackingConfiguration/wantsHDREnvironmentTextures)

A flag that instructs the framework to create environment textures in HDR format.

### Accessing app clip codes

  <doc://com.apple.documentation/documentation/AppClip/interacting-with-app-clip-codes-in-ar>

[`supportsAppClipCodeTracking`](/documentation/ARKit/ARGeoTrackingConfiguration/supportsAppClipCodeTracking)

A flag that indicates if the device tracks App Clip Codes.

[`appClipCodeTrackingEnabled`](/documentation/ARKit/ARGeoTrackingConfiguration/appClipCodeTrackingEnabled)

A Boolean value that indicates if the framework searches the physical environment for App Clip Codes.

[`ARAppClipCodeAnchor`](/documentation/ARKit/ARAppClipCodeAnchor)

An anchor that tracks the position and orientation of an App Clip Code in the physical environment.

## Relationships

### Conforms To

[`CustomDebugStringConvertible`](/documentation/Swift/CustomDebugStringConvertible)

[`NSCopying`](/documentation/Foundation/NSCopying)

[`Hashable`](/documentation/Swift/Hashable)

[`CustomStringConvertible`](/documentation/Swift/CustomStringConvertible)

[`CVarArg`](/documentation/Swift/CVarArg)

[`NSObjectProtocol`](/documentation/ObjectiveC/NSObjectProtocol)

[`Equatable`](/documentation/Swift/Equatable)

### Inherits From

[`ARConfiguration`](/documentation/ARKit/ARConfiguration)

---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)