0

複数のピン(2種類のピン)のマップがあります。私は彼らに字幕としてタイマーを持っています(何かからどれくらいの時間が経過したか)。問題は、どうすればいいのかわからないことです。確かに、タイマーはmapViewを使用してviewControllerに配置する必要があります。その後、おそらく一部のオブザーバーが注釈に落ち着きました...しかし、この概念では、オブザーバーを削除する場所とオブザーバーのアクションを設定する場所が変わります。それとももっと良いコンセプトがありますか?返信ありがとうございます。

4

1 に答える 1

0

私は自分のMKAnnotationクラスを作ります。

@interface MyAnnotation : NSObject <MKAnnotation> {
    CLLocationCoordinate2D _coordinate;
    NSMutableString * title;
    NSMutableString * subtitle;
    ...
    UIImage * pinImage;
    ...
    NSDate * startTime;
}

このクラスには、NSDate * startTimeasプロパティとrefreshTimeメソッドがあり、現在の時刻([NSDate date])を比較して、経過時間をサブタイトルで表示します。

次に、マップの注釈を更新する必要があります

for(MyAnnotation * annotation in [mapView annotations]) {
    if([annotation isKindOfClass:[MyAnnotation class]]) // important cause the user centered blue point is part of your annotation list!
        [annotation refreshTime];
}

さて、問題は次のとおりです。いつ更新しますか?

たとえば、n秒ごとに更新するタイマーを使用したり、ViewDidAppearで更新を開始したりできます...これは、実行する内容によって異なります。

編集 :

注釈の選択を更新したい場合は、MKAnnotationViewの独自のAnnotationViewサブクラスを作成できます。

次に、AnnotationViewで、touchesBegan:withEvent:またはをオーバーライドしtouchesEnded:withEvent:て更新を送信します。

私はテストしていませんが、うまくいくと確信しています。

于 2012-05-20T10:17:41.757 に答える