Vidéo: Débloquer toute les applications Google Play dans les DOM-TOM [VPN] 2025
Et si vous voulez que votre application iOS affiche la position de votre utilisateur par rapport à l'endroit où il se trouve? Idéalement, quand vous arrivez à New York (ou ailleurs), vous devriez voir une carte qui se concentre sur l'endroit où vous êtes plutôt que sur l'ensemble des États-Unis. D'abord, vous devez regarder comment vous centrez la carte. Pour ce faire, vous devez ajouter la déclaration de méthode setInitialRegion à MapController. m.
Commencez par mettre à jour l'extension de classe en ajoutant le code en gras dans l'extrait 17-3 à l'extension de classe dans MapController. m.
@interface MapController () @property (faible, non atomique) IBOutlet MKMapView * mapView; - (IBAction) mapType: (id) expéditeur; - (void) setInitialRegion; -d
Parce que le contrôleur de carte obtiendra ses données de l'objet, comme il se doit, vous devez mettre à jour l'implémentation pour importer la classe aussi. Ajoutez le code en gras à MapController. m.
#import "MapController.h" #import "AppDelegate.h" #import "Trip.h"
Enfin, ajoutez la méthode setInitialRegion à MapController. m.
- (void) setInitialRegion {AppDelegate * appDelegate = [[délégué UIApplication sharedApplication]]; MKCoordinateRegion région; CLLocationCoordinate2D initialCoordinate = [appDelegate. destination du voyageCoordinate]; Région. centre. latitude = initialCoordinate. latitude; Région. centre. longitude = initialeCoordinate. longitude; Région. envergure. latitudeDelta =. 05; Région. envergure. longitudeDelta =. 05; [soi. mapView setRegion: region animated: NO];}
Vous devez ensuite mettre à jour viewDidLoad pour utiliser cette méthode. Ajoutez le code en gras dans l'extrait 17-6 à viewDidLoad dans MapController. m pour envoyer ce message.
- (void) viewDidLoad {[super viewDidLoad]; soi. vue de la carte. déléguer = soi-même; soi. vue de la carte. showsUserLocation = YES; [self setInitialRegion]; }
Si vous l'exécutez maintenant, vous ne voyez pas les annotations … du moins pas encore.
Le réglage de la région permet de centrer la carte et de régler le niveau de zoom. Vous accomplissez tout cela avec l'énoncé suivant:
[self. mapView setRegion: région animée: NO];
Une région est une propriété de vue cartographique qui spécifie quatre éléments d'information:
-
région. centre. latitude: Spécifie la latitude du centre de la carte.
-
région. centre. longitude: spécifie la longitude du centre de la carte.
Par exemple, le centre de la carte serait New York si vous deviez définir ces valeurs comme région
. centre. latitude = 40. 712756; Région. centre. longitude = -74. 006047;
-
région. envergure. latitudeDelta: Spécifie la distance nord-sud (en degrés latitudinaux) à afficher sur la carte.Un degré de latitude est d'environ 111 kilomètres (69 milles). Une région. envergure. latitudeDelta de 0, 0036 indiquerait une distance nord-sud sur la carte d'environ un quart de mille. Les latitudes au nord de l'équateur ont des valeurs positives, alors que les latitudes au sud de l'équateur ont des valeurs négatives.
-
région. envergure. longiudeDelta: Spécifie la distance est-ouest (en degrés longitudinaux) à afficher sur la carte. Malheureusement, le nombre de miles dans un degré de longitude varie en fonction de la latitude. Par exemple, un degré de longitude est d'environ 69 miles à l'équateur, mais rétrécit à 0 miles aux pôles.
Les longitudes à l'est du méridien zéro (selon la convention internationale, le méridien zéro ou premier passe par l'observatoire royal de Greenwich à l'est de Londres) ont des valeurs positives et les longitudes à l'ouest du méridien zéro ont des valeurs négatives.
Bien que les valeurs de portée fournissent une valeur de zoom implicite pour la carte, la région réelle affichée peut ne pas correspondre à l'étendue que vous spécifiez car la carte ira au niveau de zoom le mieux adapté à la région ensemble.
Cela signifie également que même si vous changez simplement les coordonnées du centre sur la carte, le niveau de zoom peut changer car les distances représentées par une portée particulière peuvent changer à différentes latitudes et longitudes. Pour tenir compte de cela, ces développeurs intelligents chez Apple incluaient une propriété que vous pouvez définir qui change la coordonnée centrale sans changer le niveau de zoom:
@property (non atomic) CLLocationCoordinate2D centerCoordinate
Lorsque vous changez la valeur de cette propriété avec un nouveau CLLocationCoordinate2D, la carte est centrée sur la nouvelle coordonnée et les valeurs d'échelle sont mises à jour pour maintenir le niveau de zoom actuel.
Ce type de CLLocationCoordinate2D est quelque chose que vous utiliserez beaucoup. Le type CLLocationCoordinate2D est une structure qui contient une coordonnée géographique utilisant le référentiel WGS 84 (le système de coordonnées de référence utilisé par le système de positionnement global):
typedef struct {CLLocationDegrees latitude; CLLocationDegrees longitude;} CLLocationCoordinate2D;
Voici une petite explication:
-
latitude: La latitude en degrés. C'est la valeur que vous avez définie dans le code que vous venez d'entrer (région, centre, latitude = latitude; Les valeurs positives indiquent les latitudes au nord de l'équateur. Les valeurs négatives indiquent les latitudes au sud de l'équateur.
-
longitude: La longitude en degrés. C'est la valeur que vous avez définie dans le code que vous venez d'entrer (région, centre, longitude = longitude). Les mesures sont relatives au méridien zéro, avec des valeurs positives s'étendant à l'est du méridien et des valeurs négatives s'étendant à l'ouest du méridien.
CLLocationDegrees représente une valeur de latitude ou de longitude spécifiée en degrés et est un double.
Pour centrer l'affichage de la carte sur New York, vous envoyez le message setInitialRegion (le code que vous venez de saisir) lorsque la vue est chargée dans la méthode viewDidLoad:.
