MKPolyline mit verschiedenen Farben

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • MKPolyline mit verschiedenen Farben

    hi,

    ich will auf einer Karte unterschiedlich eingefärbte Linien darstellen.

    Alle in einer Farbe funktioniert wunderbar.

    ganz naiv bin ich das folgendermaßen angegangen:

    eine HUPolyLine.h

    Quellcode

    1. #import <Foundation/Foundation.h>
    2. #import <MapKit/MapKit.h>
    3. @interface HUPolyLine : MKPolyline <MKOverlay>
    4. @property (nonatomic, strong) UIColor *strokeColor;
    5. @end


    eine HUPolyLine.m

    Quellcode

    1. #import "HUPolyLine.h"
    2. @implementation HUPolyLine
    3. @end


    und dann versuche ich die Farbe zu setzen:

    Quellcode

    1. HUPolyLine *myPolyline = (HUPolyLine *)[MKPolyline polylineWithCoordinates:overlayKoordinaten count:[overlayArray count]];
    2. myPolyline.strokeColor = [UIColor blueColor];
    3. [self.mapView addOverlay:myPolyline];



    und anzuzeigen:

    Quellcode

    1. - (MKOverlayRenderer *)mapView:(MKMapView *)mapView rendererForOverlay:(id<MKOverlay>)overlay
    2. {
    3. if ([overlay isKindOfClass:HUPolyLine.class])
    4. {
    5. MKPolylineRenderer *lineView = [[MKPolylineRenderer alloc] initWithOverlay:overlay];
    6. lineView.strokeColor = [(HUPolyLine *)overlay strokeColor];
    7. lineView.lineWidth = 5;
    8. return lineView;
    9. } else if ([overlay isKindOfClass:MKPolygon.class])
    10. {
    11. MKPolygonRenderer *polygonView = [[MKPolygonRenderer alloc] initWithOverlay:overlay];
    12. polygonView.strokeColor = [UIColor magentaColor];
    13. return polygonView;
    14. }
    15. return nil;
    16. }
    Alles anzeigen


    aber leider stürzt die App schon bei "myPolyline.strokeColor = [UIColor blueColor];" ab ?(

    2014-09-22 11:02:23.345 Hummelbachaue[19628:60b] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[MKPolyline setStrokeColor:]: unrecognized selector sent to instance 0xccd73b0'



    Es scheint also doch nicht ganz so einfach zu sein wie gedacht.

    1. Wo liegt mein Denkfehler? Hab ich was übersehen?

    2. Gibt es eleganteres um Linien mit unterschiedlichen Farben auf einer Map anzuzeigen?
    Ich habe auch keine Loesung, aber ich bewundere das Problem!
    _____________________________________________________


    Hape42
  • Mit dieser Zeile:

    Quellcode

    1. HUPolyLine *myPolyline = (HUPolyLine *)[MKPolyline polylineWithCoordinates:overlayKoordinaten count:[overlayArray count]];


    erzeugst Du kein Objekt vom Typ HUPolyLine, sondern vom Typ MKPolyline. Und das versteht natürlich strokeColor nicht, daher die Meldung.

    Wenn Du HUPolyLine willst, musst Du das auch erzeugen:

    Quellcode

    1. HUPolyLine *myPolyline = [HUPolyLine hierEinenPassendenConvienceConstructorVerwendenUndImplementieren];


    ciao

    gandhi
  • ich hatte so gehofft, dass es nur eine doofe Kleinigkeit ist.

    Ich hab da bestimmt 100 mal drüber gelesen

    Quellcode

    1. ​ HUPolyLine *myPolyline = (HUPolyLine *)[HUPolyLine polylineWithCoordinates:overlayKoordinaten count:[polyLineArray count]];


    kaum macht mans richtig, gehts plötzlich :thumbsup:
    Ich habe auch keine Loesung, aber ich bewundere das Problem!
    _____________________________________________________


    Hape42