Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.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 在单击MKMapView之前,MKPolylineView不会在MKMapView上渲染_Ios_Mkmapview - Fatal编程技术网

Ios 在单击MKMapView之前,MKPolylineView不会在MKMapView上渲染

Ios 在单击MKMapView之前,MKPolylineView不会在MKMapView上渲染,ios,mkmapview,Ios,Mkmapview,我有一个视图控制器,通过编程初始化mkmapview,并将视图控制器设置为mkmapview的委托。此外,此映射视图作为子视图添加到视图控制器类中的scrollview 我将一条mkpolyline添加到mkmapview,并且 - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay 但是,加载视图控制器时不会调用viewforoverlay,而是在单击/触摸ma

我有一个视图控制器,通过编程初始化mkmapview,并将视图控制器设置为mkmapview的委托。此外,此映射视图作为子视图添加到视图控制器类中的scrollview

我将一条mkpolyline添加到mkmapview,并且

 - (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay

但是,加载视图控制器时不会调用viewforoverlay,而是在单击/触摸mapview并将其拖动/移动时调用它。

在添加MKPolylineView覆盖后尝试添加此行:

[myMapView setNeedsRedisplay];
以下是我将路线添加到地图的方式:

-(void)drawRoute
{
    ...

    routeLine = [MKPolyline polylineWithPoints:pointArr count:totalPoints];

    [geoMap addOverlay:routeLine];

    ....
}

-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id<MKOverlay>)overlay
{    
    MKPolylineView *lineView = [[[MKPolylineView alloc] initWithPolyline:overlay] autorelease];

    UIColor *lineColor = [[UIColor alloc] initWithRed:0 green:0 blue:0 alpha:1.0];

    lineView.fillColor = lineColor;
    lineView.strokeColor = lineColor;

    [lineColor release];

    lineView.lineWidth = 12;   
    lineView.alpha = 1;
    return lineView;
}

如果在指定代理之前将MKOverlay添加到MKMapView,通常会出现此问题。将MKOverlay添加到MKMapView时,将调用委托方法mapView:viewForOverlay:。如果此时尚未指定代理,则在初始渲染中将看不到覆盖渲染器

但方法-MKOverlayView*mapView:MKMapView*mapView viewForOverlay:id overlay甚至没有被调用,而且我从未将overlayview添加到mapView对象中。Overlayview是在mapview在其DelegateBw上调用上述方法时确定的。此外,此mapview作为子视图添加到uiscrollview。不确定是否重要能否显示添加MKPolylineView覆盖的代码?我不知道你是怎么做的,但看到了我的编辑答案,关于如何将MKPolylineView作为覆盖添加到地图中。[self.scroller addSubview:mapView];[mapView addOverlay:routeLine];[mapView SetVisibleMapect:_Rout直立];//mapView.scrollEnabled=否;//mapView.ZoomeEnabled=否//将此类设置为此类的委托[mapView setDelegate:self];-MKOverlayView mapView:MKMapView*mapView viewForOverlay:id overlay我有类似于您的代码,只是我的mapView添加到了scrollview,而polylineview仅在我触摸/移动MKMapView时才会渲染。因此,只有在我移动mapView之后,一切似乎都正常工作。事实上,我发现,对下面的行进行注释可以使其正常工作//[mapView setVisibleMapRect:_Rout直立];有没有办法使用setVisibleMapRect并使viewforoverlay工作