2013-05-14 73 views

回答

1

一些想法。

  1. 如果您不想在地圖上一針,而是一些自定義圖像,您可以設置地圖的委託,然後寫一個viewForAnnotation,做一樣的東西:

    - (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation 
    { 
        if ([annotation isKindOfClass:[CustomAnnotation class]]) 
        { 
         static NSString * const identifier = @"MyCustomAnnotation"; 
    
         // if you need to access your custom properties to your custom annotation, create a reference of the appropriate type: 
    
         CustomAnnotation *customAnnotation = annotation; 
    
         // try to dequeue an annotationView 
    
         MKAnnotationView* annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:identifier]; 
    
         if (annotationView) 
         { 
          // if we found one, update its annotation appropriately 
    
          annotationView.annotation = annotation; 
         } 
         else 
         { 
          // otherwise, let's create one 
    
          annotationView = [[MKAnnotationView alloc] initWithAnnotation:annotation 
                      reuseIdentifier:identifier]; 
    
          annotationView.image = [UIImage imageNamed:@"myimage"]; 
    
          // if you want a callout with a "disclosure" button on it 
    
          annotationView.canShowCallout = YES; 
          annotationView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure]; 
    
          // If you want, if you're using QuartzCore.framework, you can add 
          // visual flourishes to your annotation view: 
          // 
          // [annotationView.layer setShadowColor:[UIColor blackColor].CGColor]; 
          // [annotationView.layer setShadowOpacity:1.0f]; 
          // [annotationView.layer setShadowRadius:5.0f]; 
          // [annotationView.layer setShadowOffset:CGSizeMake(0, 0)]; 
          // [annotationView setBackgroundColor:[UIColor whiteColor]]; 
         } 
    
         return annotationView; 
        } 
    
        return nil; 
    } 
    
  2. 如果您提供標準標註做到這一點(如上圖所示),然後你可以告訴地圖你要當用戶點擊上標註的信息披露按鈕做什麼:

    - (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control 
    { 
        if (![view.annotation isKindOfClass:[CustomAnnotation class]]) 
         return; 
    
        // do whatever you want to do to go to your next view 
    } 
    
  3. 如果你真的想繞過其披露按鈕標註,而是直接去另一個視圖控制器,當你在註釋視圖標籤,你會:

欲瞭解更多信息,請參閱Annotating Maps位置感知編程指南。

相關問題