2012-03-19 7 views
7

Estaba repasando el ejemplo de ejemplo de MapKit y CoreLocation framework. Encontré estas dos estructuras (MKCoordinateSpan y CLLocationCoordinate2D) que son similares en la declaración. ¿En qué se diferencian estas funciones? ¿Puede alguien ubicar un ejemplo (utilizando ambas) para aclarar sus significados?Cuál es la diferencia entre MKCoordinateSpan y CLLocationCoordinate2D

Gracias!

Respuesta

22

MKCoordinateSpan define span, es decir, un delta, en la latitud y longitud dirección para mostrar en un mapa. Junto con un punto, puede definir una región para mostrar en un mapa.

CLLocationCoordinate2D define un único punto en el sistema de coordenadas de latitud y longitud.

Por ejemplo:

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

Aquí se puede imaginar un punto (lat,lon) centro alrededor del cual tiene una deltaLat y una deltaLon.

Así que (lat,lon) sería CLLocationCoordinate2D y deltaLat, deltaLon formaría un MKCoordinateSpan.

Tiene razón en que ambas estructuras se definen de la misma manera, pero esto es bastante común cuando las dos estructuras diferentes tienen una semántica diferente y, por lo tanto, se definen por separado como las que ha encontrado.

+0

Gracias por la respuesta, y una cosa más que consigo saber aquí, pensé que debería compartirlo contigo. Span es el nivel de zoom aquí según la documentación de Apple. Menor será el delta más alto será el nivel de zoom. Este valor delta está en flotación. ¿Por qué lo tomaron en CLLocationDegrees? – turtle

+0

Porque es un * delta *. es decir, está definiendo la región como he mostrado en el crudo diagrama. No está definiendo un nivel de zoom directamente, está definiendo exactamente una región. – mattjgalloway

+0

Entendido ... gracias .. :) – turtle

6

MKCoordinateSpan se interpretan como valores delta, mientras que CLLocationCoordinate2D se interpreta como un punto.

Por ejemplo, supongamos que quiere definir una región circular, definiría un punto central y el radio a su alrededor.

En MapKit, defina una región rectangular por MKCoordinateRegion. El punto central es un CLLocationCoordinate2D (latitude y longitude - tanto typedef de double) y un delta vertical y horizontal por MKCoordinateSpan (latitudeDelta y longitudeDelta - tanto typedef de double)

+0

Gracias amigo ... entendido por completo ... :) – turtle

Cuestiones relacionadas