1

画像を追加する必要があるこのカスタム MKPinAnnotation があります (サムネイルのように)。また、画像をタップしてフルスクリーンで開くこともできます。これを回避する最善の方法は何ですか?

4

1 に答える 1

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. 開示ボタンでコールアウトをバイパスしたいが、注釈ビューをタップしたときに別のビュー コントローラーに直接移動したい場合は、次のようにします。

詳細については、ロケーション認識プログラミング ガイドの「マップに注釈を付ける」を参照してください。

于 2013-05-14T18:30:11.533 に答える