2010-02-17 20 views
5

Ich habe MKAnnotationView subklassifiziert, um eine Annotation zu erstellen, die im Prinzip einen Kreis um einen Punkt in einer Kartenansicht durch Override von drawRect zeichnet. Der Kreis zieht in den folgenden Situationen (im Simulator) fein:MKAnnotationView verschwindet beim Wischen und Doppeltippen Zoom

  • Auf Anfangslast der Kartenansicht
  • Auf Streichen, aber nur, wenn Swipe Bewegung vor Berührung Enden gestoppt (so dass Karte nicht der Fall ist "Küste" nach Berührung endet)
  • Auf Pinch Zoom

der Kreis wird verschwinden, wenn eine der folgenden Aktionen auftreten:

  • Swipe wo Karte „Küsten“ nach Berührung enden
  • Doppeltippen zoom

Der Kreis wieder erscheinen wird, wenn eine der Aktionen in der „Arbeits“ Gruppe genommen werden, nachdem es verschwunden ist.

Was könnte das verursachen? Ich bin kein Experte im Zeichnen/Anzeigen/Layout (ehrlich gesagt, ich bin auch kein obj C- oder iPhone-Experte).

Hier sind einige leicht vereinfachte Code, der von meiner MKAnnotationView Unterklasse relevanteste scheint:

- (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

auch sehen, dieses Verhalten, auf der Suche nach einer Lösung zu finden ... –

+0

auch ich bin mit dem gleichen Problem, etwas Glück? – Ameya

+0

ist das drawRect überhaupt in der "non" working group? – Magnus

Antwort

2

Sie diese Methode hinzugefügt haben?

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

Dies wird von der Apple-Beispielcode app genommen Wetterkarte genannt, die von Apple Developer Center entfernt wurde, kann aber auf Github https://github.com/acekiller/iOS-Samples/blob/master/WeatherMap/Classes/WeatherAnnotationView.m

+0

Die Wetterkommentare im Beispielcode verschwinden und erscheinen nach jedem Ziehen/Zoomen wieder. – Robert

+1

Das liegt daran, dass sie es so implementiert haben, siehe '- (void) mapView: (MKMapView *) map regionDidChangeAnimated: (BOOL) animierte' methode in 'MapViewController.m' –

+0

Arbeitete für mich. Dunja, danke !! – pho0