Accueil Médias sociaux Comment ajouter un bouton Emplacement actuel à votre application iOS - les nuls

Comment ajouter un bouton Emplacement actuel à votre application iOS - les nuls

Vidéo: Ajouter un compte de messagerie dans Mail sur votre iPhone ou iPad – Assistance Apple 2025

Vidéo: Ajouter un compte de messagerie dans Mail sur votre iPhone ou iPad – Assistance Apple 2025
Anonim

Il est facile d'ajouter un bouton à la barre d'outils de votre application iOS pour zoomer sur l'emplacement actuel, puis revenir à la région et à l'étendue de la carte que vous affichez actuellement.

Ajoutez le code en gras pour ajouter le bouton dans la méthode MapController viewDidLoad.

- (void) viewDidLoad {[super viewDidLoad]; soi. vue de la carte. déléguer = soi-même; soi. vue de la carte. showsUserLocation = YES; [self setInitialRegion]; RTAppDelegate * appDelegate = [[délégué UIApplication sharedApplication]]; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {UILabel * titleLabel = [[UILabel alloc] initWithFrame: CGRectMake (0, 0, 250, 44)]; titleLabel. textColor = [UIColor yellowColor]; titleLabel. font = [UIFont boldSystemFontOfSize: 17]; titleLabel. textAlignment = NSTextAlignmentCenter; titleLabel. backgroundColor = [UIColor clearColor]; titleLabel. text = [self mapTitle]; UIBarButtonItem * titleView = [[UIBarButtonItem alloc] initWithCustomView: titreLabel]; UIBarButtonItem * flexibleSpace = [[UIBarButtonItem alloc] initWithBarButtonSystemItem: UIBarButtonSystemItemFlexibleSpace cible: aucune action: nulle]; flexibleSpace. largeur = 1. 0; NSMutableArray * itemsArray = [self. barre d'outils. éléments mutableCopy]; [itemsArray insertObject: flexibleSpace atIndex: [nombre d'éléments] -2]; [itemsArray insertObject: titleView atIndex: [nombre d'éléments] -2]; [soi. barre d'outils setItems: itemsArray animé: NO];} else {self. title = [appDelegate. trip mapTitle];} [self addAnnotations]; UIBarButtonItem * locateButton = [[UIBarButtonItem alloc] initWithTitle: @ Style "Locate": UIBarButtonItemStyleBordered cible: self action: @selector (goToLocation:)];; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) { NSMutableArray * élémentsArray = [self. barre d'outils. éléments mutableCopy]; [itemsArray insertObject: locateButton atIndex: [nombre d'éléments]]; [moi-même. barre d'outils setItems: itemsArray animated: NO]; } else { moi-même. navigationItem. rightBarButtonItem = locateButton; } }

Lorsque l'utilisateur appuie sur le bouton Localiser que vous créez ici, vous avez spécifié que le message goToLocation: doit être envoyé [action: @selector (goToLocation:)] à MapController (cible: soi).

UIBarButtonItem * locateButton = [[UIBarButtonItem alloc] initWithTitle: @ Style "Localiser": UIBarButtonItemStylePlain Cible: self action: @selector (goToLocation:)]; soi. navigationItem. rightBarButtonItem = locateButton;

N'oubliez pas que pour revenir à un emplacement, vous devez choisir un emplacement simulé si vous utilisez le simulateur.

Ensuite, ajoutez la méthode goToLocation: à MapController. m.

MKUserLocation * annotation = self. vue de la carte. userLocation; CLLocation * location = annotation. emplacement; if (nil == location) retourne; CLLocationDistance distance = MAX (4 * emplacement. HorizontalAccuracy, 500); MKCoordinateRegion region = MKCoordinateRegionMakeWithDistance (emplacement, coordonnée, distance, distance); [soi. mapView setRegion: région animée: NO]; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {NSArray * élémentsArray = self. barre d'outils. articles; UIBarButtonItem * locateButton = [itemArray objectAtIndex: [nombre d'éléments] -1]; locateButton. action = @selector (goToDestination:); locateButton. title = @ "Destination";} else {self. navigationItem. rightBarButtonItem. action = @selector (goToDestination:); soi. navigationItem. rightBarButtonItem. title = @ "Destination";}}

Lorsque l'utilisateur appuie sur le bouton Localiser, votre application vérifie d'abord si l'emplacement est disponible. (Cela peut prendre quelques secondes après le démarrage de l'application pour que l'emplacement devienne disponible.) Sinon, vous revenez simplement de la méthode sans modifier la région. (Vous pourriez, bien sûr, afficher une alerte informant l'utilisateur de ce qui se passe et réessayer dans 10 secondes environ)

Si l'emplacement est disponible, votre application calcule l'intervalle pour la région vers laquelle l'utilisateur se déplace. Dans ce cas, le code suivant

CLLocationDistance distance = MAX (4 * location. HorizontalAccuracy, 500);

calcule la portée à quatre fois l'exactitude horizontale de l'appareil (mais pas moins de 1 000 mètres). horizontalAccuracy est un rayon d'incertitude compte tenu de la précision de l'appareil; c'est-à-dire que l'utilisateur se trouve quelque part dans ce cercle.

Vous appelez ensuite la fonction MKCoordinateRegionMakeWithDistance qui crée un nouveau MKCoordinateRegion à partir des valeurs de coordonnées et de distance spécifiées.

Si vous ne souhaitiez pas modifier l'étendue, vous auriez simplement défini la propriété centerCoordinate de la vue Map sur userLocation, et cela aurait centré la région sur la coordonnée userLocation sans modifier l'étendue.

Lorsque l'utilisateur appuie sur le bouton Emplacement, vous modifiez le titre du bouton sur le titre de la carte et remplacez le @selecteur par (goToDestination:). Vous accédez au bouton sur l'iPad dans la barre d'outils itemsArray et sur l'iPhone via l'élément navigationItem.

Cela signifie que la prochaine fois que l'utilisateur touche le bouton, le message goToDestination: sera envoyé, donc vous feriez mieux d'ajouter le code à MapController. m. Ceci réinitialise la région à la région de destination et fait basculer le titre du bouton sur Locate.

- (void) goToDestination: (id) expéditeur {[self setInitialRegion]; if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad) {NSArray * élémentsArray = self. barre d'outils. articles; UIBarButtonItem * locateButton = [itemArray objectAtIndex: [nombre d'éléments] -1]; locateButton. action = @selector (goToLocation:); locateButton. title = @ "Localiser";} else {self. navigationItem.rightBarButtonItem. action = @selector (goToLocation:); soi. navigationItem. rightBarButtonItem. title = @ "Localiser";}}

Maintenant lancez votre application. Étant donné que vous avez déjà deux annotations sur la carte de New York, vous pouvez configurer le simulateur pour utiliser un emplacement éloigné tel que San Francisco. De cette façon, vous pouvez facilement voir que la carte fonctionne.

Parce que vous avez l'emplacement de l'utilisateur, vous pourriez être tenté de l'utiliser pour centrer la carte, et cela fonctionnerait bien, tant que vous démarrez le mécanisme de localisation dès que le programme se lance.

Le problème est que le matériel peut prendre un certain temps pour trouver l'emplacement actuel, et si vous n'attendez pas assez longtemps, vous obtenez une erreur. Vous pouvez ajouter le code pour centrer la carte sur une méthode qui s'exécute plus tard, comme

- (void) remarkValueForKeyPath: (NSString *) keyPath ofObject: (id) changement d'objet: (NSDictionary *) change de contexte: (void *) context {

Ce message est envoyé dès que la carte commence à recevoir des informations de localisation, mais vous verrez une vue initiale puis une nouvelle visualisation de la vue centrée. Pour des raisons esthétiques, vous devez vraiment initialiser MapController et MapView au démarrage du programme - un exercice pour le lecteur.

Comment ajouter un bouton Emplacement actuel à votre application iOS - les nuls

Le choix des éditeurs

Comment détecter les atteintes à la sécurité sur vos fichiers journaux Web hébergés - dummies

Comment détecter les atteintes à la sécurité sur vos fichiers journaux Web hébergés - dummies

Grande question est toujours sur la sécurité. Comment pouvez-vous repérer les failles de sécurité hébergées sur le Web pour protéger votre site et garantir qu'il ne sera pas piraté? La réponse courte est la suivante: Vous ne pouvez pas. Tout est piratable avec suffisamment de temps, des cerveaux sournois et des ressources. Cependant, il y a des choses que vous pouvez faire pour vous protéger un peu. ...

Comment utiliser MySQL Workbench pour votre site Web - dummies

Comment utiliser MySQL Workbench pour votre site Web - dummies

Bien que phpMyAdmin et d'autres outils d'hébergement Web Pour gérer les bases de données, il est possible que vous ayez besoin de quelque chose de plus puissant. MySQL Workbench est une bonne source dans cette instance. MySQL Workbench est un outil de conception et d'administration de base de données gratuit créé par Oracle qui réunit deux produits: MySQL Query Browser et MySQL ...

Le choix des éditeurs

Comment mettre du texte sur un cercle dans QuarkXPress - texte fictif

Comment mettre du texte sur un cercle dans QuarkXPress - texte fictif

Sur un cercle - c'est-à-dire texte suivant l'extérieur d'un cercle ou ovale - est un élément de conception commun dans les mises en page. C'est vraiment facile à faire dans QuarkXPress, mais ce n'est pas du tout évident comment. Procédez comme suit: Obtenez l'outil Ovale de la palette Outils et dessinez ...

ÉChanges peer-to-peer par rapport aux échanges Bitcoin réguliers - mannequins

ÉChanges peer-to-peer par rapport aux échanges Bitcoin réguliers - mannequins

Deux types d'échanges de bitcoins sont utilisés : peer-to-peer et régulier. D'une part, il y a les échanges de bitcoins réguliers, qui utilisent un carnet de commandes pour faire correspondre les ordres d'achat et de vente entre les personnes. Cependant, ni l'acheteur ni le vendeur n'ont la moindre idée de l'identité de l'autre partie, ce qui permet à tous les utilisateurs ...

L'interface d'application QuarkXPress - les nuls

L'interface d'application QuarkXPress - les nuls

Les palettes visibles à gauche, à droite et en bas de QuarkXPress sont flottantes - vous pouvez les faire glisser n'importe où qui vous convient. Contrairement aux palettes, les menus de la barre de menu sont collés: vous devez toujours passer la souris à la barre de menu pour y accéder. Cependant, ...

Le choix des éditeurs

Sept erreurs d'optimisation de moteur de recherche - nuls

Sept erreurs d'optimisation de moteur de recherche - nuls

Lorsque vous essayez d'obtenir votre site Web, c'est facile de faire des erreurs d'optimisation de moteur de recherche. Voici quelques-unes des erreurs de référencement les plus courantes. Vous ne connaissez pas vos mots-clés C'est également un problème majeur: la grande majorité des sites sont créés sans que les propriétaires ou les développeurs du site ne sachent vraiment ce que sont les mots-clés ...

Soumission de pages aux moteurs de recherche pour l'optimisation - dummies

Soumission de pages aux moteurs de recherche pour l'optimisation - dummies

Vous avez probablement vu "soumission "Services annoncés pour le référencement, peut-être sous la forme de spam dans votre boîte de réception, offrant de soumettre votre site Web à des centaines de moteurs de recherche, encore et encore. Dans la plupart des cas, ces services de soumission sont une perte totale de temps et d'argent. Voici comment obtenir votre site Web dans les moteurs de recherche. You ...

Six mythes À propos de Search Engine Optimization - mannequins

Six mythes À propos de Search Engine Optimization - mannequins

Il existe une grande confusion dans le monde des moteurs de recherche. beaucoup de mythes. Voici quelques-uns des mythes communément crus qui peuvent nuire à vos positions de moteur de recherche. Tout est une question de métabalises et de soumissions. C'est le mythe le plus répandu et le plus préjudiciable de tous, tenu par de nombreux concepteurs et développeurs Web. ...