2010-12-07 11 views
3

私は現在の位置の表示ピンアニメーションを持つ1つのマップアプリケーションを実装しました。その時にピンをクリックすると注釈ビューが開きます。しかし、私はピンをクリックせずに 注釈ビューを表示したいと考えています。可能であればそれを考えてください。mapviewのピンをクリックせずに注釈ビューを表示する方法は?

ありがとうございます。

答えて

-2

注釈をクリックして表示することができます。次のコードを使用します。

- (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]; 
} 
+0

コードにメモリリークがあり、デリゲートメソッドを実装するための推奨方法ではありません。パフォーマンス上の理由から、既存のannotationViewを再利用する必要があります。 –

2

あなたはちょうどあなたが-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が既に分かっている場合はもちろん、ループは余計です。

+0

ありがとうございます – JohnWhite

+0

解決策として質問に印を付けてください。 –

4

試してみてください:

[mapView selectAnnotation:annotation animated:YES]があまりにも動作するようです。

これが役に立ちます。

関連する問題