我有一个有两个覆盖的MKMapView :一个MKPolyline和一个MKOverlay的子类,它被简单地定义为一个覆盖的CLLocationCoordinate2D为0,0的覆盖和一个MKMapRectWorld的边界矩形。
我最初尝试添加MKPolyline覆盖,然后再添加自定义覆盖,以响应用户操作。自定义覆盖需要放在MKPolyline覆盖下。
我使用以下命令添加自定义覆盖:
[map insertOverlay:customOverlay atIndex:0];然而,它并不起作用。该cusomOverlay将添加到现有one的顶部。来自MKMapView的覆盖数组声称它们的排序是正确的。
我能够执行正确顺序的唯一方法是删除MKPolyline,添加自定义覆盖,然后将MKPolyline放回原处。
我是不是漏掉了什么明显的东西?
编辑代码片段:
自定义overlay类:
@interface TransparencyOverlay : NSObject <MKOverlay>
{}
@end
@implementation TransparencyOverlay
- (CLLocationCoordinate2D)coordinate
{
return CLLocationCoordinate2DMake(0, 0);
}
- (MKMapRect)boundingMapRect
{
return MKMapRectWorld;
}
@end添加自定义覆盖:
- (void)onUserAction
{
transparencyOverlay_ = [TransparencyOverlay new];
[context_.map insertOverlay:transparencyOverlay_ atIndex:0];
}overlay视图回调:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
// if overlay is MKOverlay return a MKPolylineView
// the construction of that view is kind of complex and can't fit in here
// else:
CLLocationCoordinate2D coords[4] = {CLLocationCoordinate2DMake(89, 180),
CLLocationCoordinate2DMake(89, -180),
CLLocationCoordinate2DMake(-89, -180),
CLLocationCoordinate2DMake(-89, 180)};
MKPolygon *poly = [MKPolygon polygonWithCoordinates:coords count:4];
MKPolygonView *view = [[MKPolygonView alloc] initWithPolygon:poly];
view.fillColor = some color
return [view autorelease];
}MKPolyline被添加为viewDidLoad上的覆盖层(同样,在这里列出它的代码太多了)。
发布于 2011-04-11 22:30:26
你有没有尝试过insertOverlay:insertOverlay:和nsertOverlay::方法?
https://stackoverflow.com/questions/5622718
复制相似问题