2012-04-05 20 views
8

Haritanızda iki yer paylaşımı seçeneğim var: bir MKCircleOverlay ve bir MKPolygonOverlay.İlk bir değişken UZTiKer ile kontrol edilen değişken yarıçapı ile. Son olarak, köşelerin sayısı ve konumuna bağlı olarak özelleştirilebilir. çemberin yarıçapını (UISlider değerini azaltmak) bazen bindirme kaybolur (daire) ve bundan sonra poligon artık çizilemez (elbette daire de) .Uygulamanın çökmemesi. Bu ne olabilir? ,MKOverlay bazen kayboluyor

- (IBAction) addCircle:(id)sender 
{ 
slider.hidden = NO; 
slider.transform = CGAffineTransformMakeRotation(M_PI*(-0.5)); 

_longPressRecognizer= [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(handleLongPress:)]; 
_longPressRecognizer.minimumPressDuration = 1.0; 

[mapview addGestureRecognizer:_longPressRecognizer]; 
[_longPressRecognizer release]; 
} 

- (void)handleLongPress:(UIGestureRecognizer *)gestureRecognizer 
{ 
if (gestureRecognizer.state != UIGestureRecognizerStateBegan) 
    return; 
CGPoint touchPoint = [gestureRecognizer locationInView:mapview];  
CLLocationCoordinate2D touchMapCoordinate = [mapview convertPoint:touchPoint toCoordinateFromView:mapview]; 

MKPointAnnotation *pa = [[MKPointAnnotation alloc] init]; 
pa.coordinate = touchMapCoordinate; 
pa.title = @"Circle Based Search"; 

[mapview addAnnotation:pa]; 
[pa release]; 

tmC = touchMapCoordinate; 
double radius = 1000.0; 

self.circleOverlay = [MKCircle circleWithCenterCoordinate:tmC radius:radius]; 
[mapview removeOverlays:[mapview overlays]]; 
[mapview addOverlay:circleOverlay]; 
[mapview removeAnnotations:[mapview annotations]]; 
} 


-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id)overlay 
{ 
if ([overlay isKindOfClass:[MKCircle class]]) 
{ 
    MKCircleView* circleView = [[MKCircleView alloc] initWithOverlay:overlay] ; 
    circleView.fillColor = [UIColor blueColor]; 
    circleView.strokeColor = [UIColor blueColor]; 
    circleView.lineWidth = 5.0; 
    circleView.alpha = 0.20; 
     return circleView; 
} 
else 
    if ([overlay isKindOfClass:[MKPolygon class]]) 
{ 
    MKPolygonView *polygonView = [[MKPolygonView alloc] initWithOverlay:overlay ]; 
    polygonView.fillColor = [UIColor blueColor]; 
    polygonView.strokeColor = [UIColor blueColor]; 
    polygonView.lineWidth = 5.0; 
    polygonView.alpha = 0.20; 
    return polygonView; 
} 
return [kml viewForOverlay:overlay]; 
} 

- (void)addCircleWithRadius:(double)radius 
{ 
self.circleOverlay = [MKCircle circleWithCenterCoordinate:tmC radius:radius]; 
[mapview removeOverlays:[mapview overlays]]; 
[mapview addOverlay:circleOverlay]; 
[mapview removeAnnotations:[mapview annotations]]; 
} 

- (IBAction)sliderChanged:(UISlider *)sender 
{ 
    double radius = (sender.value); 
[self addCircleWithRadius:radius]; 
[mapview removeAnnotations:[mapview annotations]]; 
} 
+0

Lütfen çevreyi yeniden boyutlandırmak için kullandığınız kodu bize gösterin. Görene kadar sadece neler olabileceğini tahmin edebiliriz. – sosborn

+0

Sadece bitti, bunun için üzgünüm, tamamen kod eklemeyi unuttum. – Hari

+0

Beklediğiniz öğeyi döndürüp döndürmediğini görmek için kaydırıcınızdaki yarıçapı NSLog yapmalısınız. Ayrıca merkezin kalmasını beklediğiniz yerde kaldığından emin olmak için tmc değerini kaydedin. Kod yapısından emin değilsiniz, ancak kaydırma çubuğunu yavaşça hareket ettirdiğinizde uzun dokunuşlu tanıyıcıyı etkinleştiriyor olabilirsiniz. – sosborn

cevap

3

Sorun solved.It Values altında kaydırıcının denetçisinde, kalem ucundaki, Continuous oldu mülkiyet UISlider ile bir şeydi checked.After bunu işaretlenmemiş: Burada

Kullandığım bazı kod sorun çözüldü.