2010-02-17 9 views
5

Ho creato una sottoclasse di MKAnnotationView per creare un'annotazione che disegna fondamentalmente un cerchio attorno a un punto su una vista della mappa tramite l'override di drawRect. Il cerchio disegna bene nelle seguenti situazioni (nel simulatore):MKAnnotationView scompare con lo scorrimento e tocca due volte con lo zoom

  • In caricamento iniziale della vista mappa
  • Il colpo, ma solo quando il movimento strisciata viene arrestato prima estremità di contatto (in modo che non fa cartina "costa" dopo tocco finisce)
  • Il pinch zoom

Il cerchio scompare quando una delle seguenti azioni:

  • Swipe dove mappa "coste" dopo tocco finisce
  • doppio tap zoom

Il cerchio riapparirà se una delle azioni del gruppo "di lavoro" sono presi dopo che è scomparso.

Cosa potrebbe causare questo? Non sono un esperto di disegni/display/layout (sinceramente, non sono un esperto di obj C o iPhone).

Ecco po 'di codice leggermente semplificata che sembra più rilevante dal mio sottoclasse MKAnnotationView:

- (void)drawRect:(CGRect)rect { 
    // Drawing code 
[self drawCircleAtPoint:CGPointMake(0,0) withRadius:self.radiusInPixels andColor:self.circleAnnotation.color]; 
} 


- (void)drawCircleAtPoint:(CGPoint)p withRadius:(int)r { 
    CGContextRef contextRef = UIGraphicsGetCurrentContext(); 

    float alpha = 0.75; 

    CGContextSetRGBFillColor(contextRef, 255, 0, 0, alpha); 
    CGContextSetRGBStrokeColor(contextRef, 255, 0, 0, alpha); 

    // Draw a circle (border only) 
    CGContextStrokeEllipseInRect(contextRef, CGRectMake(0, 0, 2*r, 2*r)); 
} 
+0

anche vedere questo comportamento, alla ricerca di una soluzione ... –

+0

anche io sono affrontare lo stesso problema, qualche fortuna? – Ameya

+0

è il drawRect chiamato nel gruppo di lavoro "non"? – Magnus

risposta

2

Hai aggiungere questo metodo?

- (void)setAnnotation:(id <MKAnnotation>)annotation 
{ 
    [super setAnnotation:annotation]; 
    [self setNeedsDisplay]; 
} 

questo è preso da App codice di esempio di Apple chiamato weathermap che è stato rimosso da Apple Developer Center, ma si possono trovare su github https://github.com/acekiller/iOS-Samples/blob/master/WeatherMap/Classes/WeatherAnnotationView.m

+0

Le annotazioni meteorologiche nel codice di esempio scompaiono e riappaiono dopo ogni trascinamento/zoom. – Robert

+1

Ecco perché l'hanno implementata in quel modo, vedi '- (void) mapView: (MKMapView *) mappa regionDidChangeAnimated: (BOOL) metodo animato' in 'MapViewController.m' –

+0

Ha funzionato per me. Dunja, grazie !! – pho0

Problemi correlati