質問

衣装のイメージを持っているMkannotationのみを含むMapViewがあります。ユーザーがMapTypeを変更したら、その注釈の画像を変更する必要があります。

私がした方法は、マップから注釈を削除し、正しい画像で別のアノテーションを挿入することでした。新しい画像を表示するには、約1 OU 2秒かかります。

注釈を削除せずに、別のものをドロップせずにどうすればできますか?

ありがとう、

RL

役に立ちましたか?

解決

使用できます viewForAnnotation: マップビューのインスタンスメソッド(同様の名前を持つデリゲートメソッドと同じではありません)。注釈の現在のビューを取得し、画像の変更を明示的に強制します。

たとえば、マップタイプが変更された場所で:

MKAnnotationView *av = [mapView viewForAnnotation:annotation];

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

ただし、まったく同じif-statementをに追加する必要があります viewForAnnotation 委任方法も、マップビューが後でデリゲートメソッド自体を呼び出す場合、正しい画像も設定します。

画像設定ロジックを、マップタイプを変更する場所と viewForAnnotation 委任方法( MKAnnotationView オブジェクトはパラメーターとして渡されます)。ロジックが1か所にある場合、両方の場所を同期させることを忘れないでください。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top