J'ai réussi à assembler une mapview avec une annotation de broche représentant la position actuelle de l'utilisateur qui se met à jour à un intervalle donné. Lorsque le gestionnaire de position met à jour la position de l'utilisateur, l'annotation des broches disparaît et réapparaît au nouvel emplacement. Quelqu'un at-il joué avec la mise à jour de l'emplacement GPS de l'utilisateur actuel à l'aide d'une animation, comme ce qui se fait dans l'application de cartographie officielle d'Apple? Si c'est le cas, j'aimerais avoir quelques conseils pour que cela fonctionne. Merci!iphone sdk Emplacement des utilisateurs de la mise à jour de MapView
Répondre
Solution 1:
Tout d'abord, vous devez faire de votre contrôleur de vue de mettre en œuvre MKMapViewDelegate si elle n'a pas déjà.
Ensuite, mettre en œuvre cette méthode:
- (void)mapView:(MKMapView *)mapView didAddAnnotationViews:(NSArray *)views {
MKAnnotationView *aV;
for (aV in views) {
CGRect endFrame = aV.frame;
aV.frame = CGRectMake(aV.frame.origin.x, aV.frame.origin.y - 230.0, aV.frame.size.width, aV.frame.size.height);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.45];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];
[aV setFrame:endFrame];
[UIView commitAnimations];
}
}
Ajoutez vos annotations au MapView et quand ils sont ajoutés, cette méthode de délégués sera appelé et animerez les broches de haut en bas comme ils sont ajoutés.
Les valeurs de timing et de positionnement peuvent être légèrement modifiées, mais je l'ai ajustée pour qu'elle soit la meilleure/la plus proche de la goutte traditionnelle (pour autant que j'ai testé).
Solution 2:
Sinon, si vous faites une sous-classe MKAnnotationView, vous pouvez utiliser didMoveToSuperview pour déclencher l'animation. Ce qui suit fait une chute qui se termine par un léger effet «squish»
#define kDropCompressAmount 0.1
@implementation MyAnnotationViewSubclass
...
- (void)didMoveToSuperview {
CABasicAnimation *animation = [CABasicAnimation animationWithKeyPath:@"transform"];
animation.duration = 0.4;
animation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseIn];
animation.fromValue = [NSValue valueWithCATransform3D:CATransform3DMakeTranslation(0, -400, 0)];
animation.toValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
CABasicAnimation *animation2 = [CABasicAnimation animationWithKeyPath:@"transform"];
animation2.duration = 0.10;
animation2.beginTime = animation.duration;
animation2.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
animation2.toValue = [NSValue valueWithCATransform3D:CATransform3DScale(CATransform3DMakeTranslation(0, self.layer.frame.size.height*kDropCompressAmount, 0), 1.0, 1.0-kDropCompressAmount, 1.0)];
animation2.fillMode = kCAFillModeForwards;
CABasicAnimation *animation3 = [CABasicAnimation animationWithKeyPath:@"transform"];
animation3.duration = 0.15;
animation3.beginTime = animation.duration+animation2.duration;
animation3.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
animation3.toValue = [NSValue valueWithCATransform3D:CATransform3DIdentity];
animation3.fillMode = kCAFillModeForwards;
CAAnimationGroup *group = [CAAnimationGroup animation];
group.animations = [NSArray arrayWithObjects:animation, animation2, animation3, nil];
group.duration = animation.duration+animation2.duration+animation3.duration;
group.fillMode = kCAFillModeForwards;
[self.layer addAnimation:group forKey:nil];
}
Espérons que cela aide!
PK
- 1. iphone mapview emplacement actuel
- 2. Mise à jour iphone sdk à 3.0?
- 3. Carte iPhone: Emplacement des utilisateurs distinguant des autres broches
- 4. Simuler une mise à jour dans le SDK iPhone?
- 5. Dataset Mise à jour Emplacement du filtre
- 6. iPhone MapKit - annotations mise à jour des coordonnées et plan
- 7. iPhone OS Deployment Cible après la mise à jour vers iPhone SDK 4
- 8. iPhone SDK Pointez vers un emplacement spécifique
- 9. Comment déplacer des éléments de mise en page après la mise à jour du SDK?
- 10. iPhone UILabel pas la mise à jour
- 11. Mise à jour du statut de Facebook Facebook ET url via Iphone SDK
- 12. propriétés Mise à jour pour plusieurs utilisateurs
- 13. iPhone MapView est supprimé
- 14. obtenir l'emplacement de iphone mapview
- 15. MKMapView didUpdateUserLocation pas la mise à jour
- 16. Android sdk télécharger/mise à jour ne
- 17. Mise à jour des utilisateurs existants avec un Authlogic single_access_token
- 18. iphone sdk: mise en veille de NSURLConnection?
- 19. application iPhone mise à jour
- 20. Problème de requête de mise à jour (SQLite pour iPhone SDK)
- 21. Mise à jour de l'application iPhone de la version 3.0 à la version iOS4
- 22. Mise à jour Android SDK Version
- 23. Mise à jour des applications pour iPhone 4 Retina Display
- 24. Mise à jour des fichiers de ressources pour l'application iPhone
- 25. iPhone: Mise à jour forcée SBFakeTimeString
- 26. Limiter la participation des utilisateurs à une concurrence réglementée par serveur? (iphone sdk)
- 27. iPhone sdk 3.2.3 mise à niveau Problème
- 28. SDK Android ne mise à jour des paquets installés
- 29. iPhone SDK - NSDateFormatter jour + mois
- 30. iPhone SDK: Suivre l'emplacement des utilisateurs en utilisant le GPS