2012-02-05 2 views
3

Я пытаюсь добавить круг наложение на карту, но она не появляется:Circle Overlay не отображается на карте

- (void) displayOverlayOnMap:(double) lat andlng: (double) lng 
{ 
    CLLocationCoordinate2D bostonCoord = CLLocationCoordinate2DMake(lat,lng); 
    //add MKCircle overlay... 
    MKCircle *circle = [MKCircle circleWithCenterCoordinate:bostonCoord radius:1000]; 
    [self.mapView addOverlay:circle]; 
} 

Любое тело имеют понятия, почему он не показывает?

ответ

2

вот пример .. Вы также можете найти его с помощью многоугольников на сайтах яблока: https://developer.apple.com/library/ios/#documentation/UserExperience/Conceptual/LocationAwarenessPG/AnnotatingMaps/AnnotatingMaps.html#//apple_ref/doc/uid/TP40009497-CH6-SW15

или вы можете использовать этот пример

Create overlay from user interaction on MKMapView?

- (void)handleLongPress:(UIGestureRecognizer *)gestureRecognizer 
{ 
    if (gestureRecognizer.state != UIGestureRecognizerStateBegan) 
     return; 

    CGPoint touchPoint = [gestureRecognizer locationInView:mapView];  
    CLLocationCoordinate2D touchMapCoordinate = [mapView convertPoint:touchPoint toCoordinateFromView:mapView]; 

    //add pin where user touched down... 
    MKPointAnnotation *pa = [[MKPointAnnotation alloc] init]; 
    pa.coordinate = touchMapCoordinate; 
    pa.title = @"Hello"; 
    [mapView addAnnotation:pa]; 
    [pa release]; 

    //add circle with 5km radius where user touched down... 
    MKCircle *circle = [MKCircle circleWithCenterCoordinate:touchMapCoordinate radius:5000]; 
    [mapView addOverlay:circle]; 
} 

-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id)overlay 
{ 
    MKCircleView* circleView = [[[MKCircleView alloc] initWithOverlay:overlay] autorelease]; 
    circleView.fillColor = [UIColor redColor]; 
    return circleView; 
} 

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
{ 
    static NSString *AnnotationIdentifier = @"Annotation"; 
    MKPinAnnotationView* pinView = (MKPinAnnotationView *)[mapView dequeueReusableAnnotationViewWithIdentifier:AnnotationIdentifier]; 
    if (!pinView) 
    { 
     pinView = [[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:AnnotationIdentifier] autorelease]; 
     pinView.pinColor = MKPinAnnotationColorGreen; 
     pinView.animatesDrop = YES; 
    } 
    else 
    { 
     pinView.annotation = annotation; 
    } 
    return pinView; 
} 
0

Используйте код

CLLocationDistance radiusInMeters = 1000; 
MKCircle *circle = [MKCircle circleWithCenterCoordinate:bostonCoord radius:radiusInMeters]; 

Вместо

MKCircle *circle = [MKCircle circleWithCenterCoordinate:bostonCoord radius:1000]; 

Это сработало для меня.

Смежные вопросы