何らかの理由で、MKMapView
ロード時にビュー以外のすべてをカバーするオーバーレイが表示されることがあります。ビューが読み込まれた後、横にスクロールしてオーバーレイを表示できます。また、この問題は ios5 以下にのみ存在し、この問題は ios6 では発生しません。マップをズームインまたはズームアウトすると、オーバーレイされたマップの一部が新しいビューに合わせて調整されることがわかりました。たとえば、ズームアウトすると、マップのオーバーレイされていない部分が調整され、ビューの新しいサイズに合わせて大きくなりますが、横にスクロールすると、マップは引き続き viewForOverlay で定義された色ですべてオーバーレイされます。方法。理由はわかりませんが、しばらくの間これに取り組んできましたが、Google は何も発見しませんでした。これが私のコードの一部です:
-(MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay {
if([overlay class] == [MKPolyline class]){
MKPolylineView *polylineView = [[MKPolylineView alloc] initWithPolyline:overlay];
int lineSize = [self.ud integerForKey:@"lineSize"];
polylineView.lineWidth = lineSize;
NSString *lineColor = [self.ud objectForKey:@"lineColor"];
if([lineColor isEqualToString:@"Red"]){
polylineView.strokeColor = [UIColor redColor];
}else if([lineColor isEqualToString:@"Blue"]){
polylineView.strokeColor = [UIColor blueColor];
}else if ([lineColor isEqualToString:@"Orange"]){
polylineView.strokeColor = [UIColor orangeColor];
}else if([lineColor isEqualToString:@"Green"]){
polylineView.strokeColor = [UIColor greenColor];
}else if([lineColor isEqualToString:@"Black"]){
polylineView.strokeColor = [UIColor blackColor];
}
return polylineView;
}else{
MKOverlayView *overlayToReturn = [[MKOverlayView alloc]initWithOverlay:overlay];
return overlayToReturn;
}
}
これは私が得るものです: