1

ユーザーの現在のルートに従って、アプリでマップ ビューを回転させようとしています。(3GS だけがそれを使用し、他のマシン、つまり自分の車からの干渉が多すぎるため、組み込みのコンパスを使用するのは好きではありません。)

CGAffineTransformMakeRotation メソッドはマップ ビュー全体を回転させるため、Google ロゴは画面の右下に表示されなくなります。また、すべての注釈ビューが回転し、アプリ上で奇妙に見えます。

MkMapView のコンテンツ (ストリート ドローイング) だけを回転させる方法を知っている人はいますか?

ありがとう

4

1 に答える 1

2

MapView を回転させる方法は次のとおりです (「コンパスの向きを使用して MapView を回転させる」を参照)。

[self.mapView setTransform:CGAffineTransformMakeRotation(-1 * currentHeading.magneticHeading * 3.14159 / 180)];

次に、注釈ビューの方向をデバイスの上部に維持するには:

for (MKAnnotation *annotation in self.mapView.annotations) {
     MKAnnotationView *annotationView = [self.mapView viewForAnnotation:annotation]; 
     [annotationView setTransform:CGAffineTransformMakeRotation(currentHeading.magneticHeading * 3.14159 / 180)];
}

AnnotationViews の回転点を下の中心にしたい場合は、各ビューの anchorPoint を次のように設定すると思います。

  annotationView.layer.anchorPoint = CGPointMake(0.5, 1.0);

ただし、これを行うと、annotationView の位置が変更されるという問題がまだいくつかあります (おそらく、stackoverflow の質問と同じ問題: changing-my-calayers-anchorpoint-moves-the-view)。

于 2010-03-11T15:59:41.197 に答える