画像を追加する必要があるこのカスタム MKPinAnnotation があります (サムネイルのように)。また、画像をタップしてフルスクリーンで開くこともできます。これを回避する最善の方法は何ですか?
質問する
554 次
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; }
標準の吹き出し (上記のように) を使用すると、ユーザーが吹き出しの開示ボタンをタップしたときに何をしたいかをマップに伝えることができます。
- (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 }
開示ボタンでコールアウトをバイパスしたいが、注釈ビューをタップしたときに別のビュー コントローラーに直接移動したい場合は、次のようにします。
に設定
canShowCallout
しNO
ますviewForAnnotation
。と
詳細については、ロケーション認識プログラミング ガイドの「マップに注釈を付ける」を参照してください。
于 2013-05-14T18:30:11.533 に答える