3

次の方法で、注釈をマップビューの特定の画像に置き換えました。

  • (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id)annotation

ただし、このメソッドはaddAnnotationのシーケンスでは実行されません。

つまり、「addAnnotation:」メソッドはA、B、C、D ...のシーケンスによって実行されますが、「mapView:viewForAnnotation:」メソッドはB、D、C、A..によって実行されます。

「mapView:viewForAnnotation:」メソッドをaddAnnotationの順序で実行するにはどうすればよいですか?

4

1 に答える 1

1

できません。Appleは、注釈を追加した順序でその関数を実行することを約束していません。viewForAnnotationsは、マップの現在表示可能な領域内にある注釈に対してのみ呼び出されるため、要求している順序で呼び出すことは意味がありません。 。画面外にあった注釈はどうなりますか?ユーザーが地図をスクロールして、さらに多くの地図が表示された場合はどうでしょうか。それらすべてをもう一度ループしますか、それとも新しいものだけですか?

代わりに、マップが要求しているビューを計算できるように、各注釈にいくつかの情報を追加する必要があります。MKAnnotationProtocolを実装するために作成したクラスは、適切なビューを生成するために必要な情報、または残りの情報を保持するリスト内の項目へのポインターのいずれかを保持する必要があります。

于 2012-08-31T14:04:45.043 に答える