我有一个视图控制器,我以编程方式初始化mkmapview,并将视图控制器设置为mkmapview的委托。此外,此mapview作为子视图添加到视图控制器类中的scrollview。
我将mkpolyline添加到mkmapview,我有
- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay
但是,加载视图控制器时不会调用viewforoverlay,但是当我单击/触摸mapview并拖动/移动它时会调用它。
答案 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;
}