J'ai le code suivant à la place:MapKit - Niveau de zoom maintient la réinitialisation
-(void)viewDidLoad
{
//Set Zoom level using Span
MKCoordinateSpan span;
span.latitudeDelta = 0.05;
span.longitudeDelta = 0.05;
region.span = span;
}
-(void)locationChange:(CLLocation *)newLocation: (CLLocation *)oldLocation
{
// This zooms in on the users current loation.
curlocation = newLocation.coordinate;
region.center = curlocation;
[_mapView setRegion:region animated:TRUE];
}
Dans un premier temps le niveau de zoom est défini selon le code viewDidLoad. Comment enregistrer l'ID de niveau de zoom que l'utilisateur effectue un zoom avant ou arrière, car chaque fois qu'une nouvelle mise à jour d'emplacement est reçue, le niveau de zoom est réinitialisé.
Existe-t-il un moyen de détecter si l'utilisateur a effectué un zoom avant ou arrière?
MISE À JOUR
J'ai ajouter la méthode regionDidChangeAnimated comme suit:
- (void)mapView:(MKMapView *)mapView regionDidChangeAnimated:(BOOL)animated
{
NSLog(@"Region DID change. Center is now %f,%f, Deltas=%f,%f",
region.center.latitude, region.center.longitude,
region.span.latitudeDelta, region.span.longitudeDelta);
}
sortie dans le journal ressemble:
2010-11-01 15: 17: 29,317 Legginit [2948: 307] Modification de la région DID.
Center est maintenant 54,181150, -8,483177, deltas = 0.050000,0.050000
2010-11-01 15: 17: 30,553 Legginit [2948: 307] did changement.
Center est maintenant 54,181150, -8,483177, deltas = 0.050000,0.050000
2010-11-01 15: 17: 31,063 Legginit [2948: 307] did changement.
Center est maintenant 54,181150, -8,483177, deltas = 0.050000,0.050000
2010-11-01 15: 17: 31,653 Legginit [2948: 307] did changement.
Center est maintenant 54,181150, -8,483177, deltas = 0.050000,0.050000
2010-11-01 15: 17: 32,582 Legginit [2948: 307] did changement.
Center est maintenant 54,181150, -8,483177, deltas = 0.050000,0.050000
2010-11-01 15: 17: 33,608 Legginit [2948: 307] did changement.
Center est maintenant 54,181150, -8,483177, deltas = 0.050000,0.050000
Comme je l'ai un zoom avant sur le téléphone que j'attendais les valeurs Delta de changer, mais ils restent à 0,05. Suis-je mal comprendre comment cela fonctionne. J'ai pensé que je pourrais capturer les valeurs Delta et les stocker afin que je puisse réinitialiser le niveau de zoom si l'utilisateur quitte et rentre dans la carte.
Cordialement, Stephen
aBitObvious, je suis passé à l'utilisation de regionWillChangeAnimated. J'ai mis à jour ma question ci-dessus, pourriez-vous jeter un coup d'œil si vous avez une minute. Je ne pense pas comprendre exactement comment cela fonctionne. – Stephen
J'ai mis à jour la réponse. – Anna