2016-06-29 27 views
0

Ich habe Probleme beim Ausfüllen des Overlays. Ich möchte eine neue Farbe verwenden. Danke für die Hilfe im Voraus.Swift, wie Overlay mit einer neuen Farbe zu füllen

func addBoundry() 
    { 
     var points=[CLLocationCoordinate2DMake(39.02, -76.9),CLLocationCoordinate2DMake(38.97, -76.9),CLLocationCoordinate2DMake(38.97, -77),CLLocationCoordinate2DMake(39.02, -77)] 

     let polygon = MKPolygon(coordinates: &points, count: points.count) 

     mapView.addOverlay(polygon) 
    } 

    let regionRadius: CLLocationDistance = 1000 
    func centerMapOnLocation(location: CLLocation) { 
     let coordinateRegion = MKCoordinateRegionMakeWithDistance(location.coordinate, 
                    regionRadius * 2.0, regionRadius * 2.0) 
     mapView.setRegion(coordinateRegion, animated: true) 
    } 
    func mapView(mapView: MKMapView!, rendererForOverlay overlay: MKOverlay!) -> MKOverlayRenderer! { 
     if overlay is MKPolygon { 
      let polygonView = MKPolygonRenderer(overlay: overlay) 
      //polygonView.strokeColor = UIColor.magentaColor() 
      polygonView.strokeColor = UIColor(red: 0/255.0, green: 180/255.0, blue: 0/255.0, alpha: 0.4) 

      return polygonView 
     } 

     return nil 
    } 

Antwort

3

Wenn Sie mit strokeColor einen Umriss zu Ihrem Polygon wollen, müssen Sie lineWidth für Ihre MKPolygonRenderer einzustellen. Der Standardwert ist 0.

Aber Sie sagen "Füllen Sie das Overlay". Wenn Sie beabsichtigen, es auszufüllen, verwenden Sie fillColor, nicht strokeColor.

(Natürlich würde ich auch sicherstellen, dass Sie die delegate der Kartenansicht richtig angegeben haben und dass Ihre rendererForOverlay überhaupt aufgerufen wird. Fügen Sie dort einen Haltepunkt und/oder eine Protokollanweisung hinzu und stellen Sie sicher Diese Routine wird ordnungsgemäß aufgerufen.)

0

Die Überlagerungsansicht kann mit der Delegate-Methode von MKMapView gefüllt werden.

- (MKOverlayView *)mapView:(MKMapView *)mapView viewForOverlay:(id <MKOverlay>)overlay{ 

    MKPolylineView *overlayView = [[MKPolylineView alloc] initWithOverlay:overlay]; 
    overlayView.lineWidth = 5; 

    if ([overlay.title isEqualToString:@"other"]){ 
     overlayView.strokeColor= [UIColor lightGrayColor]; 
     overlayView.fillColor = [UIColor lightGrayColor]; 
    } 
    else if([overlay.title isEqualToString:@"one"]){ 
     overlayView.strokeColor= [UIColor blueColor]; 
     overlayView.fillColor = [UIColor blueColor]; 
    } 

    return overlayView; 

}