私は現在の位置の表示ピンアニメーションを持つ1つのマップアプリケーションを実装しました。その時にピンをクリックすると注釈ビューが開きます。しかし、私はピンをクリックせずに 注釈ビューを表示したいと考えています。可能であればそれを考えてください。mapviewのピンをクリックせずに注釈ビューを表示する方法は?
ありがとうございます。
私は現在の位置の表示ピンアニメーションを持つ1つのマップアプリケーションを実装しました。その時にピンをクリックすると注釈ビューが開きます。しかし、私はピンをクリックせずに 注釈ビューを表示したいと考えています。可能であればそれを考えてください。mapviewのピンをクリックせずに注釈ビューを表示する方法は?
ありがとうございます。
注釈をクリックして表示することができます。次のコードを使用します。
- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation{
static NSString *identifier = @"Pin";
MKPinAnnotationView *pin = [[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:identifier];
pin.canShowCallout = YES;
[pin setSelected:YES animated:NO];
return [pin autorelease];
}
あなたはちょうどあなたが-setSelected:animated:
を選択して、呼び出したいあなたMKAnnotationViewインスタンスを見つける必要があります。例えば
、あなたループすることができ、このようなMKMapViewのあなたの注釈:
for (YOURCLASSHERE *a in mapView.annotations) {
// Your current position (if shown) is an annotation as well. Thus check for the right class!
if ([a isKindOfClass:[YOURCLASSHERE class]]) {
// insert some smart if statement here, if you have multiple annotations!
[[mapView viewForAnnotation:a] setSelected:YES animated:YES];
}
}
YOURCLASSHEREがMKAnnotation
プロトコルを実装するクラスです。
annotationViewが既に分かっている場合はもちろん、ループは余計です。
ありがとうございます – JohnWhite
解決策として質問に印を付けてください。 –
試してみてください:
[mapView selectAnnotation:annotation animated:YES]
があまりにも動作するようです。
これが役に立ちます。
コードにメモリリークがあり、デリゲートメソッドを実装するための推奨方法ではありません。パフォーマンス上の理由から、既存のannotationViewを再利用する必要があります。 –