2017-07-21 5 views
0

Ich kann nicht herausfinden, wie der Kreis, den ich erstelle, mit einer Benutzereingabe von einer Eingabeaufforderung gerendert wird, die nach dem Radius fragt. Ich erben die userMapView von einer anderen Klasse, aber nichts mit Overlay-Rendering in dieser Klasse, so dass ich nie die RendererForOverlay-Funktion bis jetzt verwendet. Muss ich diese Funktion in der Elternklasse hinzufügen oder mache ich etwas anderes falsch?Das Zeichnen eines Kreises auf einer Karte wird nicht angezeigt

@IBAction func addGeoFencePushed(_ sender: Any) { 
    let alertController = UIAlertController(title: nil, message: "How large would you like the geofence to be?", preferredStyle: .alert) 
    let confirmAction = UIAlertAction(title: "Confirm", style: .default) { (_) in 
     if let field = alertController.textFields?[0] { 
      // store your data 
      ALGlobal.sharedInstance.globalDefaults.set(field.text! as String, forKey: "geoFenceSize") 
      let rad = field.text! 
      self.drawGeoFence(radius: rad) 
     } else { 
      // user did not fill field 
     } 
    } 
    self.present(alertController, animated: true, completion: nil) 
} 

func drawGeoFence(radius: String){ 
    let bagList = ALGlobal.sharedInstance.bagLists 
    let bag = bagList?[0] 
    let center = CLLocationCoordinate2D(
     latitude: CLLocationDegrees.init(bag!.latitude), 
     longitude: CLLocationDegrees.init(bag!.longitude)) 
    let circle = MKCircle(center: center, radius: Double(radius)!) 

    userMapView.add(circle) 
} 

func mapView(mapView: MKMapView,rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer { 

    let circleRenderer = MKCircleRenderer(overlay: overlay) 
    circleRenderer.fillColor = UIColor.blue.withAlphaComponent(0.1) 
    circleRenderer.strokeColor = UIColor.blue 
    circleRenderer.lineWidth = 1 
    return circleRenderer 
} 

Antwort

1

Ihre Renderer-Funktion wird nicht aufgerufen, da sie die falsche Signatur hat. In Swift 3 ist die korrekte Signatur

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer { 

Auch müssen Sie sicherstellen, dass self ist die Delegierten Kartenansicht.

+0

Ich bin überrascht, dass Sie keine Compiler-Warnung erhalten. – matt

Verwandte Themen