iPhone Reference Library Apple Developer Connection spyglass button

CLLocation Class Reference

Inherits from
Conforms to
Framework
/System/Library/Frameworks/CoreLocation.framework
Availability
Available in iPhone OS 2.0 and later.
Declared in
CLLocation.h
Related sample code

Overview

A CLLocation object represents the location data generated by a CLLocationManager object. This object incorporates the geographical coordinates and altitude of the device’s location along with values indicating the accuracy of the measurements and when those measurements were made. On some devices, this class also reports information about the speed and heading in which the device is moving.

Typically, you use a CLLocationManager object to create instances of this class based on the last known location of the user’s device. You can create instances yourself, however, if you want to cache custom location data or get the distance between two different coordinate points.

This class is designed to be used as is and should not be subclassed.

Tasks

Initializing a Location Object

Location Attributes

Measuring the Distance Between Coordinates

Getting Speed and Course Information

Properties

For more about Objective-C properties, see “Properties” in The Objective-C 2.0 Programming Language.

altitude

The altitude in meters. (read-only)

@property(readonly, nonatomic) CLLocationDistance altitude
Discussion

Positive values indicate altitudes above sea level. Negative values indicate altitudes below sea level.

Availability
See Also
Declared In
CLLocation.h

coordinate

The geographical coordinate information. (read-only)

@property(readonly, nonatomic) CLLocationCoordinate2D coordinate
Discussion

When running in the simulator, Core Location assigns a fixed set of coordinate values to this property. You must run your application on an iPhone OS–based device to get real location values.

Availability
Related Sample Code
Declared In
CLLocation.h

course

The direction in which the device is travelling.

@property(readonly, nonatomic) CLLocationDirection course
Discussion

Course values are measured in degrees starting at due north and continuing clockwise around the compass. Thus, north is 0 degrees, east is 90 degrees, south is 180 degrees, and so on. Course values may not be available on all devices. A negative value indicates that the direction is invalid.

Availability
Declared In
CLLocation.h

horizontalAccuracy

The radius of uncertainty for the location, measured in meters. (read-only)

@property(readonly, nonatomic) CLLocationAccuracy horizontalAccuracy
Discussion

The coordinate’s latitude and longitude identify the center of the circle and this value indicates the radius of that circle. A negative value indicates that the coordinate’s latitude and longitude are invalid.

Availability
Related Sample Code
Declared In
CLLocation.h

speed

The instantaneous speed of the device in meters per second.

@property(readonly, nonatomic) CLLocationSpeed speed
Discussion

This value reflects the instantaneous speed of the device in the direction of its current heading. A negative value indicates an invalid speed. Because the actual speed can change many times between the delivery of subsequent location events, you should use this property for informational purposes only.

Availability
Declared In
CLLocation.h

timestamp

The time at which this location was determined. (read-only)

@property(readonly, nonatomic) NSDate *timestamp
Availability
Declared In
CLLocation.h

verticalAccuracy

The accuracy of the altitude value in meters. (read-only)

@property(readonly, nonatomic) CLLocationAccuracy verticalAccuracy
Discussion

The value in the altitude property could be plus or minus the value indicated by this property. A negative value indicates that the altitude value is invalid.

Availability
See Also
Related Sample Code
Declared In
CLLocation.h

Instance Methods

description

Returns the location data in a formatted text string.

- (NSString *)description

Return Value

A string of the form “<<latitude>, <longitude>> +/- <accuracy>m (speed <speed> kph / heading <heading>) @ <date-time>”, where <latitude>, <longitude>, <accuracy>, <speed>, and <heading> are formatted floating point numbers and <date-time> is a formatted date string that includes date, time, and time zone information.

Discussion

The returned string is intended for display purposes only.

Availability
Declared In
CLLocation.h

getDistanceFrom:

Returns the distance (in meters) from the receiver’s coordinate to the coordinate of the specified location.

- (CLLocationDistance)getDistanceFrom:(const CLLocation *)location

Parameters
location

The other coordinate value.

Return Value

The distance (in meters) between the two locations.

Discussion

This method measures the distance between the two locations by tracing a line between them that follows the curvature of the Earth. The resulting arc is a smooth curve and does not take into account specific altitude changes between the two locations.

Availability
Related Sample Code
Declared In
CLLocation.h

initWithCoordinate:altitude:horizontalAccuracy:verticalAccuracy:timestamp:

Initializes and returns a location object with the specified coordinate information.

- (id)initWithCoordinate:(CLLocationCoordinate2D)coordinate altitude:(CLLocationDistance)altitude horizontalAccuracy:(CLLocationAccuracy)hAccuracy verticalAccuracy:(CLLocationAccuracy)vAccuracy timestamp:(NSDate *)timestamp

Parameters
coordinate

A coordinate structure containing the latitude and longitude values.

altitude

The altitude value for the location.

hAccuracy

The accuracy of the coordinate value. Specifying a negative number indicates that the coordinate value is invalid.

vAccuracy

The accuracy of the altitude value. Specifying a negative number indicates that the altitude value is invalid.

timestamp

The time to associate with the location object. Typically, you would set this to the current time.

Return Value

A location object initialized with the specified information.

Discussion

Typically, you acquire location objects from the location service, but you can use this method to create new location objects for other uses in your application.

Availability
Declared In
CLLocation.h

initWithLatitude:longitude:

Initializes and returns a location object with the specified latitude and longitude.

- (id)initWithLatitude:(CLLocationDegrees)latitude longitude:(CLLocationDegrees)longitude

Parameters
latitude

The latitude of the coordinate point.

longitude

The longitude of the coordinate point.

Return Value

A location object initialized with the specified coordinate point.

Discussion

Typically, you acquire location objects from the location service, but you can use this method to create new location objects for other uses in your application. When using this method, the other properties of the object are initialized to appropriate values. In particular, the altitude and horizontalAccuracy properties are set to 0, the verticalAccuracy property is set to -1 to indicate that the altitude value is invalid, and the timestamp property is set to the time at which the instance was initialized.

Availability
Declared In
CLLocation.h

Constants

CLLocationDegrees

Represents a latitude or longitude value specified in degrees.

typedef double CLLocationDegrees;
Availability
Declared In
CLLocation.h

CLLocationCoordinate2D

A structure that contains a geographical coordinate using the WGS 84 reference frame.

typedef struct {
CLLocationDegrees latitude;
CLLocationDegrees longitude;
} CLLocationCoordinate2D;
Fields
latitude

The latitude in degrees. Positive values indicate latitudes north of the equator. Negative values indicate latitudes south of the equator.

longitude

The longitude in degrees. Measurements are relative to the zero meridian with positive values extending east of the meridian and negative values extending west of the meridian.

Availability
Declared In
CLLocation.h

CLLocationAccuracy

Represents the accuracy of a coordinate value in meters.

typedef double CLLocationAccuracy;
Availability
Declared In
CLLocation.h

Accuracy Constants

Constant values you can use to specify the accuracy of a location.

extern const CLLocationAccuracy kCLLocationAccuracyBest;
extern const CLLocationAccuracy kCLLocationAccuracyNearestTenMeters;
extern const CLLocationAccuracy kCLLocationAccuracyHundredMeters;
extern const CLLocationAccuracy kCLLocationAccuracyKilometer;
extern const CLLocationAccuracy kCLLocationAccuracyThreeKilometers;
Constants
kCLLocationAccuracyBest

Use the best possible accuracy.

Available in iPhone OS 2.0 and later.

Declared in CLLocation.h.

kCLLocationAccuracyNearestTenMeters

Accurate to within ten meters of the desired target.

Available in iPhone OS 2.0 and later.

Declared in CLLocation.h.

kCLLocationAccuracyHundredMeters

Accurate to within one hundred meters.

Available in iPhone OS 2.0 and later.

Declared in CLLocation.h.

kCLLocationAccuracyKilometer

Accurate to the nearest kilometer.

Available in iPhone OS 2.0 and later.

Declared in CLLocation.h.

kCLLocationAccuracyThreeKilometers

Accurate to the nearest three kilometers.

Available in iPhone OS 2.0 and later.

Declared in CLLocation.h.

CLLocationSpeed

Represents the speed at which the device is moving in meters per second.

typedef double CLLocationSpeed;
Availability
Declared In
CLLocation.h

CLLocationDirection

Represents a direction that is measured in degrees and relative to true north.

typedef double CLLocationDirection;
Discussion

Direction values are measured in degrees starting at due north and continue clockwise around the compass. Thus, north is 0 degrees, east is 90 degrees, south is 180 degrees, and so on. A negative value indicates an invalid direction.

Availability
Declared In
CLLocation.h

Last updated: 2009-02-06

Did this document help you? Yes It's good, but... Not helpful...