Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

What is the difference between MKCoordinateSpan and CLLocationCoordinate2D

I was going through the sample example of MapKit and CoreLocation framework. I found these two structs (MKCoordinateSpan and CLLocationCoordinate2D) which are similar in declaration. How are these different in functionality, can someone please site an example (using both) to clear their meanings.

Thanks!

like image 859
turtle Avatar asked Mar 19 '12 13:03

turtle


People also ask

What is Mkcoordinatespan?

MKCoordinateRegion. A rectangular geographic region that centers around a specific latitude and longitude.

What is cllocationcoordinate2d?

The latitude and longitude associated with a location, specified using the WGS 84 reference frame.


2 Answers

MKCoordinateSpan defines a span, i.e. a delta, in the latitude and longitude directions to show on a map. Along with a point you can then define a region to display on a map.

CLLocationCoordinate2D defines a single point in the latitude and longitude coordinate system.

For example:

|<---- deltaLat  ---->|
|---------------------|---
|                     | |
|                     | |
|                     | |
|                     | |
|          +          |deltaLon
|      (lat,lon)      | |
|                     | |
|                     | |
|                     | |
|---------------------|---

Here you can imagine a centre point (lat,lon) about which you have a deltaLat and a deltaLon.

So (lat,lon) would be a CLLocationCoordinate2D and deltaLat, deltaLon would form a MKCoordinateSpan.

You're right that both structures are defined in the same way, but this is quite common where the two different structures have different semantics and therefore are defined separately like you've found.

like image 61
mattjgalloway Avatar answered Oct 22 '22 14:10

mattjgalloway


MKCoordinateSpan is interpreted as delta values, whereas CLLocationCoordinate2D is interpreted as a point.

For example, let's say you want to define a circular region, you would define a center point, and the radius around it.

In MapKit, you define a rectangular region by MKCoordinateRegion. The center point is a CLLocationCoordinate2D (latitude and longitude - both typedef of double) and a vertical and horizontal delta by MKCoordinateSpan (latitudeDelta and longitudeDelta - both typedef of double)

like image 43
Canopus Avatar answered Oct 22 '22 13:10

Canopus