Angenommen, Sie Overlays für zwei König von Typen wollen, hätte ich das Overlay-Typ mit einer BOOL-Eigenschaft gesteuert, wenn nur sagen lässt, einfache Route dieses Overlay hinzufügen, wenn es die erweiterte Route fügen Sie das andere Overlay hinzu. [self.myPolyline-Klasse] und [self.myDottedPolyline Klasse] können gleiche Klasse sein >> id.
@property(nonatomic,assign) BOOL isDottedPolyline;
-(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
{
UIColor *BlueRoute = [UIColor colorWithRed:0/255.0f green:104/255.0f blue:163/255.0f alpha:1.0f];
UIColor *redRoute = [UIColor colorWithRed:241/255.0f green:122/255.0f blue:6/255.0f alpha:1.0f];
if (!self.isDottedPolyline)
{
MKPolylineRenderer *renderer1 = [[MKPolylineRenderer alloc]initWithPolyline:overlay];
NSLog(@"Renderer : %@",renderer1);
renderer1.lineWidth = 5;
renderer1.path = (__bridge CGPathRef _Nullable)(self.myPolyline);
[renderer1 createPath];
[renderer1 invalidatePath];
[renderer1 setNeedsDisplay];
renderer1.strokeColor = BlueRoute;
if (_myPolyline.isAccessibilityElement == TRUE)
{
NSLog(@"Renderer Color : %@",renderer1);
renderer1.fillColor = BlueRoute;
}
return renderer1;
}
else if(self.isDottedPolyline){
MKPolylineRenderer *renderer2 = [[MKPolylineRenderer alloc]initWithPolyline:overlay];
//Renderer 2 print
NSLog(@"Renderer 2 : %@",renderer2);
renderer2.lineWidth = 7;
renderer2.lineDashPattern = @[@20,@3];
[renderer2 setNeedsDisplay];
renderer2.path = (__bridge CGPathRef _Nullable)(self.myDottedPolyline);
[renderer2 createPath];
[renderer2 invalidatePath];
renderer2.strokeColor = redRoute;
if (_myDottedPolyline.isAccessibilityElement == FALSE)
{
//Renderer 2 print
NSLog(@"Renderer 2 Color: %@",renderer2);
renderer2.fillColor = redRoute;
}
return renderer2;
//sets the pattern to a line 2 points long followed by a 1 point gap.
//renderer.lineDashPattern = @[@2, @1];
} else{
return nil; }
}
Ich nehme an, Sie zwei MKPolylineRenderer für 2 verschiedene Zwecke verwenden self.isDottedPolyline auf true zu verwenden, wenn u ein vernarrt erstellen möchten und es auf false gesetzt, wenn Sie die andere, zwischen zwei den Vermerk schreiben wollen und wenn u
[self.geocoder reverseGeocodeLocation:location completionHandler:^(NSArray *placemarks, NSError *error) {
// //NSLog(@"Found placemarks: %@, error: %@", placemarks, error);
if (error == nil && [placemarks count] > 0) {
if (I WANT DOTED POLYLINE)
self. isDottedPolyline = YES;
else
self. isDottedPolyline = NO;
}
}];
verwenden u gesetzt self.isDottedPolyline es wahr oder falsch ist, dann wird poliline auf gemacht werden, was Sie brauchen, und wie es zu -(MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
geht, wird es sehen, die man wahr, vernarrt oder nicht.
Wie Sie MKPolyline in Ihrer Karte hinzufügen, können Sie diesen Code hinzufügen? – CodeChanger
[self.sampleMap addOverlay: self.mypolyline]; [self.sampleMap addOverlay: self. myDottedPolyline] –
Ok, kannst du jetzt Screenshots hinzufügen, die du auf deiner Karte bekommst? – CodeChanger