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