3

に遠近法変換を適用しようとしています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変数を減らしてより近くで表示したり、この動作中の初期状態からズームインしたりすると、マップが適切にズームインされず、ズームアウト状態のときと同じようにマップが拡大縮小されることです。一方、のm34フィールドを設定しない場合transform、つまり、遠近法なしでマップを傾けるだけの場合は、問題なく機能します。

遠近法でストリートレベルの地図を取得する方法はありますか?

4

1 に答える 1

2

追加することで、パースペクティブを機能させることができました

[map.layer setShouldRasterize:YES];

したがって、遠近法を適用した場合のマップコンテンツの直接レンダリングには明らかに問題があります。

于 2012-02-14T09:27:46.930 に答える