手动设置MKOverlayView(或子视图)的框架

时间:2011-11-20 23:23:42

标签: iphone mapkit

我有一个视图,我在MKMapView上使用它作为叠加层(它使用OpenGL绘制)。为了正确执行绘图,glView的框架需要与mapView的框架完全相同。我也不能将视图放在地图的顶部,因为我希望其他注释和叠加层位于它之上。

我尝试这样做的方法是创建一个边界MapRect = MKMapRectWorld的MKOverlayView。然后我将glView作为子视图添加到overlayView并手动设置glView.frame = mapView.frame。问题是glView的框架使用的是与mapView不同的坐标系。

mapView的框架位于标准视图所需的坐标中(类似于0,0,320,250)。 glView的框架似乎使用MKMapPoints作为其坐标基础。

所以我的想法是在我的MKOverlayView子类中做这样的事情......

glView.frame = [self rectForMapRect:[mapView visibleMapRect]];

这给了我一个正确坐标的矩形(类似于61612032.000000,105586688.000000,5275648.000000,5685248.000000),但它与地图并不完全一致。 y方向关闭,缩放有时也是错误的。

所以我的问题就是这个。

  1. 有没有办法只使用普通的屏幕坐标设置MKOverlayView(或其中一个子视图)的帧?
  2. 还是有另外一种方式可以实现我所缺少的同样的事情吗?

1 个答案:

答案 0 :(得分:3)

您可以使用mkoverlay方法将cgpoint转换为mkmappoint - (MKMapPoint)mapPointForPoint:(CGPoint)point

我希望它可以帮到你

消息来源:http://developer.apple.com/library/ios/documentation/MapKit/Reference/MKOverlayView_class/Reference/Reference.html#//apple_ref/occ/instm/MKOverlayView/mapPointForPoint