2016-07-11 3 views
0

원호와 반지름을 사용하여 원을 만들려고합니다. 다른 부분의 원을 만듭니다. 그러나 저장 키를 true로 설정하면 부분이 인 경우 원을 그리지 마십시오. 코드 도움말을 참조하십시오. 제발 .. 어떤 유용한 ans 감사하겠습니다.원을 만들 수 없습니다. MKMapView

-(void) viewDidAppear:(BOOL)animated 
{ 
    [super viewDidAppear:YES]; 

    if ([[[NSUserDefaults standardUserDefaults] valueForKey:@"isSettingUpPref"] isEqualToString:@"true"]) { 

      lat_forSetPref = [[[NSUserDefaults standardUserDefaults] valueForKey:@"lat_forSetPref"] floatValue]; 
      lon_forSetPref = [[[NSUserDefaults standardUserDefaults] valueForKey:@"lon_forSetPref"] floatValue]; 
      radius_forSetPref = [[[NSUserDefaults standardUserDefaults] valueForKey:@"radius_forSetPref"] floatValue]; 

      NSLog(@"lat: %f Long: %f Radius: %f &&&&&&&&&&&&&& ",lat_forSetPref, lon_forSetPref, radius_forSetPref); 
      CLLocationCoordinate2D center1 = {lat_forSetPref, lat_forSetPref}; 
      [self createCircle:center1 withRadius:radius_forSetPref]; 
      self.lblSliderValue.text = [NSString stringWithFormat:@"%0.0f m",radius_forSetPref]; 

    }else{ 
      CLLocationCoordinate2D center = {latitude, longitude}; 

      [[NSUserDefaults standardUserDefaults] setFloat:latitude forKey:@"lat_forSetPref"]; 
      [[NSUserDefaults standardUserDefaults] setFloat:longitude forKey:@"lon_forSetPref"]; 
      [self createCircle:center withRadius:200]; 
    } 
} 

// method used to create circle 
-(void)createCircle:(CLLocationCoordinate2D)cordinates withRadius:(float)area 
{ 
    NSLog(@"lat: %f long: %f and radius: %f ################# ",cordinates.latitude, cordinates.longitude, area); 
    circle = [MKCircle circleWithCenterCoordinate:cordinates radius:area]; 
    [self.mapView addOverlay:circle]; 
} 
+0

당신이 그리려는 아래의 기능을 시도 할 수 있습니다를 같이 할 반지름이 오른쪽에있는 원? –

+0

내부에 if 및 else diff long long 및 radius가 있습니다. 그에 따라 원을 그려야합니다. 문제가 생깁니다. ** "내부"if mkcircle 대리자 메서드는 다른 viewcontroller에서 왔을 때 실행되지 않습니다 ** .. – vaibhav

+0

수표를 추가 할 수 있습니까? "MKMapViewDelegate" –

답변

0

대신 MKCircle을 사용할 수 있습니다.

CLLocationDistance fenceDistance = 300; 
CLLocationCoordinate2D circleMiddlePoint = CLLocationCoordinate2DMake(yourLocation.latitude, yourLocation.longitude); 
MKCircle *circle = [MKCircle circleWithCenterCoordinate:circleMiddlePoint radius:fenceDistance]; 
[yourMapView addOverlay: circle]; 

아래 MKMapViewDelegate 방법을 추가하고 같은 것을 할 : 기능 이상

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay 
{ 
    MKCircleView *circleView = [[[MKCircleView alloc] initWithCircle:(MKCircle *)overlay] autorelease]; 
    circleView.fillColor = [[UIColor redColor] colorWithAlphaComponent:0.9]; 
    return circleView; 
} 

가 작동하지 않는 당신이

- (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay { 
MKCircleRenderer *circleRenderer = [[MKCircleRenderer alloc] initWithCircle:overlay]; 
circleRenderer.fillColor = [UIColor greenColor]; 
circleRenderer.alpha = 1.f; 
return circleRenderer; 
} 

Example : 
    CLLocationDistance fenceDistance = 100000; 
    MKCircle *circle = [MKCircle circleWithCenterCoordinate:region.coordinate radius:fenceDistance]; 
[self.mapView addOverlay:circle]; 
+0

친애하는 @ 하리 나는 똑같은 접근법을 적용하고있다. 나의 질문과 코멘트를주의 깊게 읽으시오 .. 답장을위한 고맙습니다. – vaibhav