2010-11-15 3 views
9

J'ai un MKOverlayView qui affiche des données radar animées sous la forme d'une série d'images. Le problème que j'ai, c'est que les images radar sont découpées en carreaux par MapKit. Pour échanger des images que j'ai une minuterie qui appelle une fonction de mise à jour qui fixe l'image actuelle dans mon recouvrement puis appelle les suivantesAnimation d'un MKOverlayView

[myRadarOverlayView setNeedsDisplayInMapRect:self.mapView.visibleMapRect]; 

Les mises à jour de superposition, mais le fait d'une tuile à la fois si je reçois une animation saccadée . Des idées sur comment animer toutes les mosaïques (c'est-à-dire échanger des images) exactement au même moment?

+0

Avez-vous déjà trouver un moyen de goodf de le faire? –

Répondre

6

J'ai résolu cela en ajoutant un UIImageView comme une sous-vue de MKOverlayView.

  • à animer, arrêter le dessin avec la normale drawMapRect: zoomScale: inContext: (via une variable d'instance/indicateur de propriété) et tirage au UIImageView place (à la propriété animationImages), puis utilisez startAnimating.

  • Vous pouvez gérer panoramique et de zoom par réinitialisant la UIImageView en réponse à Mapview: regionDidChangeAnimated :.

+2

Je me tape la tête sur celui-ci aussi, avez-vous un exemple de code à partager? Je pense que je ne suis pas en train de régler le cadre/les limites de façon à ce que l'UIImageView ne soit pas affiché. – botteaap

+0

Avez-vous un exemple de code que vous pourriez partager? Merci! – sridvijay

+0

J'ai pu utiliser ce code ici: https://github.com/yickhong/YHMapDemo et ce code ici: http://code.google.com/p/sugartin-info/downloads/detail?name=RadarOverLay. zip & can = 2 & q combinés ensemble pour obtenir le résultat décrit dans cette réponse. – sridvijay

0

Y at-il un rappel lorsque toutes les tuiles ont fini de charger? Si oui, vous pouvez aller avec la double mise en mémoire tampon, et mettre à jour la vue hors écran, puis l'activer.