Cómo mostrar la región del usuario en un mapa en su aplicación para ios

¿Qué pasa si usted quiere que su aplicación iOS para mostrar la ubicación del usuario en relación a donde están? Lo ideal sería que, cuando llegue a Nueva York (o donde sea), debería ver un mapa que se centra en dónde se encuentra en oposición a todos los Estados Unidos. En primer lugar, es necesario buscar la forma de centrar el mapa. Para ello, es necesario añadir el setInitialRegion declaración de método de MapController.m.

En primer lugar, actualizar la extensión de clase añadiendo el código en negrita en el listado 17-3 a la extensión de clase en MapController.m.

@interface MapController @property () (débil, no atómica) IBOutlet MKMapView * mapView-- (IBAction) mapType: (id) sender-- (Void) setInitialRegion--re

Debido a que el controlador Mapa obtendrá sus datos del objeto, como debe ser, tiene que actualizar la aplicación para importar la clase también. Agregue el código en negrita de MapController.m.

#importar "MapController.h"#importar "AppDelegate.h"#importar "Trip.h"

Por último, añadir el setInitialRegion método para MapController.m.

- (Void) setInitialRegion {AppDelegate * AppDelegate = [[UIApplication sharedApplication] delegado] -MKCoordinateRegion región-CLLocationCoordinate2D initialCoordinate = [appDelegate.trip destinationCoordinate] -region.center.latitude = initialCoordinate.latitude-region.center.longitude = initialCoordinate.longitude- region.span.latitudeDelta = 0,05-region.span.longitudeDelta = .05- [self.mapView setRegion: región animada: NO] -}

A continuación, deberá actualizar viewDidLoad utilizar este método. Agregue el código en negrita en el listado 17-6 a viewDidLoad en MapController.m para enviar este mensaje.

Video: Tutorial: aprende a utilizar la Aplicación para móviles Waze

- (Void) viewDidLoad {[súper viewDidLoad] -self.mapView.delegate = auto-self.mapView.showsUserLocation = Si-[Auto setInitialRegion] -}

Si ejecuta este momento, no ve las anotaciones ... al menos no todavía.

Ajuste de la región es la forma de centrar el mapa y establecer el nivel de zoom. A lograr todo esto con la siguiente declaración:

[Self.mapView setRegion: región animada: NO] -

Una región es una propiedad Ver mapa que especifica cuatro datos:

Video: Crea un app basada en GPS

region.center.latitude: Especifica la latitud del centro del mapa.

  • region.center.longitude: Especifica la longitud del centro del mapa.

    Por ejemplo, el centro del mapa sería Nueva York si se va a establecer esos valores como

    region.center.latitude = 40.712756-region.center.longitude = -74.006047-
  • region.span.latitudeDelta: Especifica la distancia de norte a sur (en grados de latitud) para mostrar en el mapa. Un grado de latitud es de aproximadamente 111 kilómetros (69 millas). UN region.span.latitudeDelta de 0,0036 especificaría una distancia de norte a sur en el mapa de alrededor de un cuarto de milla. Latitudes norte del ecuador tienen valores positivos, mientras que las latitudes al sur del ecuador tienen valores negativos.

  • region.span.longiudeDelta: Especifica la distancia de este a oeste (en grados longitudinales) para mostrar en el mapa. Por desgracia, el número de millas en un grado de longitud varía en función de la latitud. Por ejemplo, un grado de longitud es de aproximadamente 69 millas en el ecuador, pero se reduce a 0 millas en los polos.

    Longitudes al este del meridiano cero (por convención internacional, el meridiano cero o primer pasa por el Real Observatorio de Greenwich, en el este de Londres) tienen valores positivos, y las longitudes al oeste del meridiano cero tener valores negativos.

    Video: iOS 7 en el iPhone, Navegación y mapas de Apple

  • Aunque los valores de referencia proporcionan un valor implícito para el zoom del mapa, la región que usted ve en pantalla no puede ser igual a la duración especificado, porque el mapa irá al nivel de zoom que mejor se adapte a la región que se ha configurado.

    Esto también significa que incluso si sólo cambia la coordenada del centro en el mapa, el nivel de zoom puede cambiar debido a las distancias representadas por un lapso determinado pueden cambiar en diferentes latitudes y longitudes. Para tener en cuenta que, los desarrolladores inteligentes de Apple incluyen una propiedad se puede establecer que los cambios de coordenadas del centro sin cambiar el nivel de zoom:

    @property (no atómica) CLLocationCoordinate2D centerCoordinate

    Cuando se cambia el valor de esta propiedad con un nuevo CLLocationCoordinate2D, el mapa se centra en la nueva coordenada, y los valores de referencia se actualizan para mantener el nivel de zoom actual.

    Ese CLLocationCoordinate2D tipo es algo que va a utilizar una gran cantidad. los CLLocationCoordinate2D tipo es una estructura que contiene un (sistema de coordenadas de referencia usado por el Sistema de Posicionamiento Global) de coordenadas utilizando el sistema de referencia WGS 84 geográfica:

    typedef struct {CLLocationDegrees latitud-CLLocationDegrees longitude-} CLLocationCoordinate2D-

    He aquí una pequeña explicación:

    • latitudLa latitud en grados. Este es el valor que estableció en el código que acaba de introducir (region.center.latitude = geográficas de latitud). Los valores positivos indican las latitudes norte del ecuador. Los valores negativos indican las latitudes al sur del ecuador.

    • longitud: La longitud en grados. Este es el valor que estableció en el código que acaba de introducir (region.center.longitude = longitude-). Las mediciones son en relación con el meridiano cero, con valores positivos que se extienden al este del meridiano y los valores negativos que se extienden al oeste del meridiano.

    CLLocationDegrees representa un valor de latitud o longitud especificada en grados y es una doble.

    Para centrar la pantalla del mapa de Nueva York, se envía el setInitialRegion mensaje (el código que acaba de escribir) cuando la vista se carga en el viewDidLoad: método.

    Artículos Relacionados