我有一个带有两个叠加层的MKMapView:MKPolyline和MKOverlay的子类,它简单地定义为CLLocationCoordinate2D为0,0和MKMapRectWorld的边界矩形的叠加层。
我正在尝试最初添加MKPolyline叠加层和之后的自定义叠加层,以响应用户操作。自定义叠加层需要在MKPolyline叠加层下。
我添加自定义叠加层:
[map insertOverlay:customOverlay atIndex:0];
然而它不起作用。 cusomOverlay添加在现有的上面。 MKMapView的叠加数组声称它们的排序正确。
我能够执行正确顺序的唯一方法是删除MKPolyline,添加自定义叠加层,然后重新放入MKPolyline。
我错过了一些明显的东西吗?
编辑代码段:
自定义叠加层:
@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];
}
叠加视图回调:
- (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];
}
在viewDidLoad上添加MKPolyline作为叠加层(再次,这里列出的代码太多了。)
答案 0 :(得分:0)
您是否尝试过insertOverlay:aboveOverlay:和nsertOverlay:belowOverlay:methods?