0

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

我将 mkpolyline 添加到 mkmapview,我有

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

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

4

2 回答 2

0

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

于 2013-09-27T18:36:43.573 回答
-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;
}
于 2012-10-26T05:59:57.780 回答