mkmapviewのmkannotationからuiimageを変更します
-
25-10-2019 - |
質問
衣装のイメージを持っている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か所にある場合、両方の場所を同期させることを忘れないでください。
所属していません StackOverflow