我想要一个带有两个不同叠加层的MKMapView。
首先,我在地图上有一个“图像叠加”(TileOverlay), 其次,我想在地图上绘制一条路线作为叠加。
如果我在两个不同的项目中执行此操作,一切正常(一个带图像叠加,另一个带路径叠加)
现在,我想知道如果合并我的项目,viewForOverlay委托函数应该是什么样子?
对于我的图片(图块)叠加层,我目前看起来像这样:
- (MKOverlayView *) mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
{
TileOverlayView *tileView = [[TileOverlayView alloc] initWithOverlay:overlay];
tileView.tileAlpha = 1.0;
return tileView;
}
对于我的路线叠加,它看起来像这样:
- (MKOverlayView*)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{
MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay];
polylineView.lineJoin = kCGLineJoinRound;
polylineView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.4];
return polylineView;
}
现在,如果我想“合并”这些(合并到一个项目中),这个方法应该怎么样?
- (MKOverlayView*)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{
//what comes here?
}
答案 0 :(得分:4)
您可以首先检查传递到mapView:viewForOverlay:
方法的叠加层类型,从而处理这种情况,如下所示:
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
if ([overlay isKindOfClass:[MKPolyline class]]) {
MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay];
polylineView.lineJoin = kCGLineJoinRound;
polylineView.strokeColor = [[UIColor blueColor] colorWithAlphaComponent:0.4];
return polylineView;
} else {
TileOverlayView *tileView = [[TileOverlayView alloc] initWithOverlay:overlay];
tileView.tileAlpha = 1.0;
return tileView;
}