1

MKAnnotationのみのmapViewがあり、コスチューム画像があります。ユーザーがmapTypeを変更すると、そのアノテーションの画像を変更する必要があります。

私がそれをした方法は、地図から注釈を削除し、正しい画像で別の注釈を挿入することでしたが、私は最善の方法ではないと思います。新しい画像が表示されるまで約1〜2秒かかります。

注釈を削除せずに別の注釈を削除するにはどうすればよいですか?

ありがとう、

RL

4

1 に答える 1

8

マップビューのviewForAnnotation:インスタンスメソッド(同様の名前のデリゲートメソッドとは異なります)を使用して、アノテーションの現在のビューを取得し、画像を明示的に変更することができます。

たとえば、マップタイプが変更された場所では、次のようになります。

MKAnnotationView *av = [mapView viewForAnnotation:annotation];

if (mapView.mapType == MKMapTypeHybrid)
    av.image = [UIImage imageNamed: @"hybrid.png"];
else
    av.image = [UIImage imageNamed: @"standard.png"];

ただし、viewForAnnotationデリゲートメソッドにもまったく同じifステートメントを追加して、後でマップビューがデリゲートメソッド自体を呼び出したときに、正しい画像も設定されるようにする必要があります。

画像設定ロジックを、マップタイプを変更した場所から、およびviewForAnnotationデリゲートメソッドから呼び出すことができる共通のメソッドに移動することをお勧めします(MKAnnotationViewオブジェクトはパラメーターとして渡されます)。ロジックが1つの場所にある場合は、両方の場所の同期を維持することを覚えておく必要はありません。

于 2011-07-24T20:40:12.107 に答える