2016-04-25 124 views
0

我在地圖視圖中有一批註釋引腳。當我點擊引腳時,我得到該引腳的索引。我想,如果我點擊的引腳比所有的引腳都隱藏,除了點擊哪個用戶,如果再次點擊該引腳,所有的引腳都顯示出來。刪除除了一個之外的所有註釋引腳

這裏是我得到所選引腳索引的代碼。

CPointAnnotation *cAnno=(CPointAnnotation*)view.annotation; 
     NSInteger index=cAnno.index; 

     if (index<hospitalsArry.count) { 
      selectedHospital=[hospitalsArry objectAtIndex:index]; 

      if (selectedIndex==index) { 

       selectedIndex=-1; 



       return; 
      }else{ 
       selectedIndex=index; 

       [[self.mapView viewForAnnotation:cAnno] setHidden:NO]; 


      } 

回答

1

CustomAnnotation.h

#import <MapKit/MapKit.h> 

@interface CustomAnnotation : NSObject <MKAnnotation> 

@property (nonatomic,readonly)CLLocationCoordinate2D coordinate; 
@property (nonatomic, copy)NSString *title; 
@property (nonatomic, strong)MKAnnotationView *annotaitonView; 

-(id)initWithTitle:(NSString *)newTitle coordinates:(CLLocationCoordinate2D)newCoordinate; 
-(MKAnnotationView *)createAnnotationView; 
@end 

CustomAnnotation.m

@implementation CustomAnnotation 

-(id)initWithTitle:(NSString *)newTitle coordinates:(CLLocationCoordinate2D)newCoordinate 
{ 
    if (self = [super init]) { 
     _title = newTitle; 
     _coordinate = newCoordinate; 
    } 

    return self; 
} 
-(MKAnnotationView *)createAnnotationView 
{ 
    MKAnnotationView *annView=[[MKAnnotationView alloc]initWithAnnotation:self reuseIdentifier:@"MyCustomAnnoation"]; 
    annView.enabled=TRUE; 
    annView.canShowCallout=TRUE; 
    annView.image=[UIImage imageNamed:@"map-pin-marker-circle-128.png"]; 
    return annView; 
} 
@end 

MapViewController.m

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation { 

    if ([annotation isKindOfClass:[MKPointAnnotation class]]) { 
     return nil; 
    } 

    if ([annotation isKindOfClass:[CustomAnnotation class]]) { 

     CustomAnnotation *myAnn=(CustomAnnotation *)annotation; 


     MKAnnotationView *annView=[mapView dequeueReusableAnnotationViewWithIdentifier:@"MyCustomAnnoation"]; 
     if (annView == nil) { 

      annView=[myAnn createAnnotationView]; 
     } 
     else 
     { 
      annView.annotation=myAnn; 
     } 
     myAnn.annotaitonView=annView; 

     return annView; 
    } 
    else 
     return nil; 

} 

-(void)mapView:(MKMapView *)mapView didSelectAnnotationView:(MKAnnotationView *)view 
{ 
    [self hideOtherPinsByIgnoringThis:view]; 
} 


-(void)hideOtherPinsByIgnoringThis:(MKAnnotationView *)ann 
{ 


    NSArray *arrAllPins=[self.myMapView annotations]; 

    //Find selected Annotation View in all pins on map 
    NSMutableArray *removeAnn=[[NSMutableArray alloc]init]; 
    for (CustomAnnotation *annotation in arrAllPins) 
    { 
     if (annotation.annotaitonView != ann) { 
      [removeAnn addObject:annotation]; 
     } 
    } 
    [self.myMapView removeAnnotations:removeAnn]; 

} 
相關問題