在点击MKMapView之前,MKPolylineView不会在MKMapView上呈现

时间:2012-10-26 05:49:51

标签: ios mkmapview

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

我将mkpolyline添加到mkmapview,我有

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

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

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:-1)

添加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;
}