0

私は地図アプリケーションに取り組んでいます。特定の条件で場所を取得し、マップビューに注釈を表示し、カスタムコールアウトバブルを表示しました。

私の要件は、注釈ピンを次のように表示することです。

  • 注釈を表示するための角が丸い画像
  • 注釈の右上隅には、赤いバッジのようなビューがあります。
  • その赤いバッジビューにアクセスし、特定の方法でテキストを設定する必要があります。

これで、Imageを注釈ビューに設定し、次のように角を丸めることができることがわかりました。

pinView.image = [UIImage imageNamed:@"annotationImage"];
[pinView.layer setCornerRadius:8.0];
[pinView setClipsToBounds:YES];

これがAnnotationViewpinViewです。

カスタムビューを作成してピンビューに割り当て、赤いバッジを取得して画像も設定できるかどうかをお知らせください。

アップデート

私はもっ​​とたくさんのことを試みて、見解を出すことに成功しました。しかし、問題は、MKAnnotationViewマップ上のオブジェクトを使用すると、それをタップしたり、ジェスチャレコグナイザーを呼び出したりできないことです。を使用MKPinAnnotationViewすると、didSelectedメソッドを呼び出したり、ジェスチャレコグナイザーを追加したりできますが、ピンアノテーションであるため、画像を設定できません。Plzは、これが可能かどうかを知らせてくれます。

前もって感謝します。

4

1 に答える 1

3

you need to set your Class as MKMapViewDelegate and fill this method:

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation {
 CustomMapAnnotationView *annotationView = nil;

 pinView.image = [UIImage imageNamed:@"annotationImage"];
 [pinView.layer setCornerRadius:8.0];
 [pinView setClipsToBounds:YES];

 NSString* identifier = @"CustomMapAnnotation";
 CustomMapAnnotationView *newAnnotationView = (CustomMapAnnotationView *)[self.mapView dequeueReusableAnnotationViewWithIdentifier:identifier];

 if(nil == newAnnotationView) {
    newAnnotationView = [[[CustomMapAnnotationView alloc] initWithAnnotation: pinView reuseIdentifier:identifier] autorelease];
 }

 annotationView = newAnnotationView;
 [annotationView setEnabled:YES];
 [annotationView setCanShowCallout:YES];

 return annotationView;
}

Thus, you can return a custom Class, subclass of MKAnnotationView, and you can add badge now to your custom view.

于 2012-09-12T05:43:27.623 に答える