2010-02-17 18 views
5

Podsumowałem MKAnnotationView, aby utworzyć adnotację, która w zasadzie rysuje okrąg wokół punktu na widoku mapy poprzez zastąpienie drawRect. Krąg rysuje grzywny w następujących sytuacjach (w symulatorze):MKAnnotationView znika po przesunięciu palcem i dwukrotnym kliknięciu

  • Na wstępnym obciążeniu widoku mapy
  • Na machnięcia, ale tylko wtedy, gdy trzepnąć ruch jest zatrzymany przed zakończeniem dotykowych (tak, że mapa nie "coast" po zakończeniu dotykowy)
  • na pinch zoom

krąg zniknie, gdy którekolwiek z poniższych działań wystąpić:

  • Swipe gdzie map „wybiegiem” po kontakcie kończy
  • dotknij dwukrotnie zoom

Koło pojawi się ponownie, jeśli któryś z działaniami w grupie „pracy” są podejmowane po to zniknął.

Co może być przyczyną? Nie jestem ekspertem od rysowania/wyświetlania/układania (szczerze mówiąc, nie jestem też ekspertem od CIC lub iPhone'a).

Oto nieco uproszczony kod, który wydaje się najbardziej istotne z mojego MKAnnotationView podklasy:

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

również widząc ten problem, szukasz rozwiązania ... –

+0

nawet jestem z tym samym problemem, jakiekolwiek szczęście? – Ameya

+0

jest drawRect wywołany w ogóle w grupie roboczej "non"? – Magnus

Odpowiedz

2

Czy dodać tę metodę?

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

To jest wzięte z aplikacji Przykładowy kod Apple o nazwie WeatherMap który został usunięty z firmy Apple Developer Center, ale można znaleźć na github https://github.com/acekiller/iOS-Samples/blob/master/WeatherMap/Classes/WeatherAnnotationView.m

+0

Adnotacje pogodowe w kodzie przykładowym znikają i pojawiają się ponownie po każdym przeciągnięciu/powiększeniu. – Robert

+1

To dlatego, że zaimplementowali to w ten sposób, zobacz '- (void) mapView: (MKMapView *) mapa regionDidChangeAnimated: (BOOL) animowana' metoda w 'MapViewController.m' –

+0

Pracowała dla mnie. Dunja, dziękuję !! – pho0

Powiązane problemy