透視変換をMKMapViewに適用する

私は MKMapView に透視変換を適用しようとしています。私はこのStackoverflowの質問ので、私のコードは次のようになります(View Controllerの viewDidLoad メソッドに挿入されます)。

MKMapView *map = [[MKMapView alloc] initWithFrame:CGRectMake(0.0, 0.0, 320.0, 480.0)];
[self.view addSubview:map];

CLLocationDistance distance = 2000000.0;
CLLocationCoordinate2D coordinate = CLLocationCoordinate2DMake(52.5, 13.4);
[map setRegion:MKCoordinateRegionMakeWithDistance(coordinate, distance, distance)];

CATransform3D transform = CATransform3DIdentity;
transform.m34 = 1.0/-1200.0;
transform = CATransform3DRotate(transform, M_PI_4, 1.0, 0.0, 0.0);
map.layer.transform = transform;

このコードは、書かれているようにうまくいきますが、私は視点を適用してヨーロッパの地図を取得します。問題は、私が distance 変数を減らしてより近いビューを取得したり、この動作状態の初期状態からズームインしたりしてもマップが正しくズームインされず、ズームアウト状態。一方、 transform m34 フィールドを設定しないと、パースペクティブを使わずに地図を傾けるだけでうまくいきます。

遠近法で街路地図を作成する方法はありますか?

3

1 答え

私はその視点を

[map.layer setShouldRasterize:YES];

つまり、パースペクティブが適用されたときに地図コンテンツを直接レンダリングする際に問題があるようです。

2
追加された