Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/amazon-web-services/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在委托函数中处理多个MKOverlays_Ios_Xcode_Mkoverlay - Fatal编程技术网

Ios 如何在委托函数中处理多个MKOverlays

Ios 如何在委托函数中处理多个MKOverlays,ios,xcode,mkoverlay,Ios,Xcode,Mkoverlay,我想要一个带有两个不同覆盖层的MKMapView 首先,我有一个“地图上的图像覆盖”(TileOverlay), 第二,我想在地图上画一条路线 如果我在两个不同的项目(一个是图像覆盖,另一个是路线覆盖)中做这些事情,一切都会很好 现在,我想知道如果合并项目,viewForOverlay委托函数应该是什么样子 对于我的图像(平铺)覆盖,我当前的外观如下: - (MKOverlayView *) mapView:(MKMapView *)mapView viewForOverlay:(id <

我想要一个带有两个不同覆盖层的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 {

    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;
    }
-(MKOverlayView*)地图视图:(MKMapView*)地图视图覆盖:(id)覆盖
{    
TileOverlayView*tileView=[[TileOverlayView alloc]INITWITHOVERLAYVIEW:overlay];
tileView.tileAlpha=1.0;
返回tileView;
}
对于“我的路线覆盖”,它如下所示:

- (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 {

    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;
    }
-(MKOverlayView*)地图视图:(MKMapView*)地图视图覆盖:(id)覆盖
{
MKPolylineView*polylineView=[[MKPolylineView alloc]initWithPolyline:overlay];
polylineView.lineJoin=kCGLineJoinRound;
polylineView.strokeColor=[[UIColor blueColor]colorWithAlphaComponent:0.4];
返回多段线视图;
}
现在,如果我想“合并”这些(到一个项目中),这个方法应该是什么样子

 - (MKOverlayView*)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay 
{
    //what comes here?
}
-(MKOverlayView*)地图视图:(MKMapView*)地图视图覆盖:(id)覆盖
{
//什么来了?
}

您可以通过首先检查传递到
mapView: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 {

    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;
    }
-(MKOverlayView*)地图视图:(MKMapView*)地图视图覆盖:(id)覆盖{
如果([overlay iskindof类:[MKPolyline类]]){
MKPolylineView*polylineView=[[MKPolylineView alloc]initWithPolyline:overlay];
polylineView.lineJoin=kCGLineJoinRound;
polylineView.strokeColor=[[UIColor blueColor]colorWithAlphaComponent:0.4];
返回多段线视图;
}否则{
TileOverlayView*tileView=[[TileOverlayView alloc]INITWITHOVERLAYVIEW:overlay];
tileView.tileAlpha=1.0;
返回tileView;
}

您可以通过首先检查传递到
mapView: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 {

    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;
    }
-(MKOverlayView*)地图视图:(MKMapView*)地图视图覆盖:(id)覆盖{
如果([overlay iskindof类:[MKPolyline类]]){
MKPolylineView*polylineView=[[MKPolylineView alloc]initWithPolyline:overlay];
polylineView.lineJoin=kCGLineJoinRound;
polylineView.strokeColor=[[UIColor blueColor]colorWithAlphaComponent:0.4];
返回多段线视图;
}否则{
TileOverlayView*tileView=[[TileOverlayView alloc]INITWITHOVERLAYVIEW:overlay];
tileView.tileAlpha=1.0;
返回tileView;
}

好的,谢谢,但是我应该返回什么?我不需要返回一个包含两个覆盖的MKOverlayView吗?或者如果它是类MKPolyline,我只需要返回polylineView,如果它是类tileView,我需要返回tileView吗?好的,谢谢,但是我应该返回什么?我不需要返回一个包含两个覆盖的MKOverlayView吗??或者,如果polylineView是类MKPolyline,我就必须返回polylineView,如果它是类tileView,我就必须返回tileView?