我有一个视图,我在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方向关闭,缩放有时也是错误的。
所以我的问题就是这个。
答案 0 :(得分:3)
您可以使用mkoverlay方法将cgpoint转换为mkmappoint
- (MKMapPoint)mapPointForPoint:(CGPoint)point
我希望它可以帮到你