複数のピン(2種類のピン)のマップがあります。私は彼らに字幕としてタイマーを持っています(何かからどれくらいの時間が経過したか)。問題は、どうすればいいのかわからないことです。確かに、タイマーはmapViewを使用してviewControllerに配置する必要があります。その後、おそらく一部のオブザーバーが注釈に落ち着きました...しかし、この概念では、オブザーバーを削除する場所とオブザーバーのアクションを設定する場所が変わります。それとももっと良いコンセプトがありますか?返信ありがとうございます。
質問する
95 次
1 に答える
0
私は自分のMKAnnotationクラスを作ります。
@interface MyAnnotation : NSObject <MKAnnotation> {
CLLocationCoordinate2D _coordinate;
NSMutableString * title;
NSMutableString * subtitle;
...
UIImage * pinImage;
...
NSDate * startTime;
}
このクラスには、NSDate * startTime
asプロパティと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 に答える