に遠近法変換を適用しようとしています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
、つまり、遠近法なしでマップを傾けるだけの場合は、問題なく機能します。
遠近法でストリートレベルの地図を取得する方法はありますか?