2012-02-06 88 views
3

我试图将透视变换应用于MKMapView。我下面的this Stackoverflow question的例子,所以我的代码如下所示(插入视图控制器的viewDidLoad法):将透视变换应用于MKMapView

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,即仅仅倾斜地图而没有透视图,则它工作得很好。

有没有一种方法可以获得具有视角的街道级地图?

回答

2

我设法透视加入

[map.layer setShouldRasterize:YES]; 

因此很明显,有应用前景的时候是与地图内容直接渲染问题的工作。