MKMapView Zoom Sur la position de l'Utilisateur une Fois Mais Pas La Deuxième Fois dans l'Onglet-Bar App (iOS)
J'ai un MKMapView dans le cadre d'une manette de Navigation dans un Onglet de la Barre d'application.
Je clique sur un UIButton sur le premier Contrôleur et le pousse vers le second point de Vue Contrôleur qui contient le MKMapView. Lors de l'Affichage de la Carte des charges, il effectue un zoom avant sur l'emplacement de l'utilisateur à l'aide de:
- (void)mapView:(MKMapView *)theMapView didUpdateUserLocation:(MKUserLocation *)userLocation
{
if ( !initialLocation )
{
self.initialLocation = userLocation.location;
MKCoordinateRegion region;
region.center = theMapView.userLocation.coordinate;
region.span = MKCoordinateSpanMake(2.0, 2.0);
region = [theMapView regionThatFits:region];
[theMapView setRegion:region animated:YES];
}
}
Quand j'appuie sur le bouton de retour sur la manette de Navigation au-dessus de la MapView et cliquez ensuite sur le dos de la carte, il n'est plus fait un zoom sur l'utilisateur de l'emplacement actuel, mais juste a le zoom par défaut:
Voici une photo de la vue de la deuxième fois.
Je me dis qu'il ne fonctionnera pas correctement si je pouvais en quelque sorte appeler le didUpdateUserLocation dans le viewDidAppear méthode, mais je ne suis pas sûr de la façon de tirer cette off depuis le didUpdateUserLocation est un délégué de la méthode.
Est que la bonne approche ou est-il une approche différente que je dois prendre pour faire cela? Merci!
OriginalL'auteur MillerMedia | 2011-12-01
Vous devez vous connecter pour publier un commentaire.
Je tirais toutes les zoom code dans sa propre méthode qui peut être messaged de
-viewDidAppear:
et-mapView:didUpdateToUserLocation:
.Puis dans
-viewDidAppear:
...Et dans le
-mapView:didUpdateToUserLocation:
délégué méthode...C'est la non-reconnaissance de la région pour une raison quelconque, même si elle n'a pas changé à partir du code original.
Mon erreur, j'ai essayé d'accéder à la
coordinate
bien surMKUserLocation
quand il n'y a pas un seul. Vous avez besoin pour obtenir lecoordinate
de lalocation
bien surMKUserLocation
. Mis à jour mon code.Il crée le même problème. A-t-elle quelque chose à voir avec la "région = [theMapView regionThatFits:région]; [theMapView setRegion:région animated:YES];? Dans le code d'origine, 'theMapView' a un pointeur qui a été définie dans le didUpdateToUserLocation méthode. Droit maintenant, je l'ai mis à mapView (qui est le MKMapView objet que je synthétisé pour l'ensemble de la classe, pas de la méthode particulière). Cela fait-il sens? J'ai le sentiment que c'est quelque chose à faire avec ça...
Ah, j'ai mis à jour mon code une fois de plus à utiliser la synthèse
mapView
de la propriété.OriginalL'auteur Mark Adams