2016-10-11 2 views
3

Я должен нарисовать дугу, имеющую два угла, центральную точку и радиус в качестве входных данных. Я использую UIBezierPath, но наложение не добавляется к карте. Вот мой код:swift: как рисовать дугу на карте через MapKit?

func calculateByArc() 
    { 
     let startingAzimuth = Double(upperLimitTextBox.text!) 
     let endingAzimuth = Double(upperLimitUomTextBox.text!) 
     let radius = Double(lowerLimitTextBox.text!) 
     let latitude = Double(lowerLimitUomTextBox.text!) 
     let longitude = Double(textField5.text!) 
     let clockwise = clockwiseSwitch.isOn ? true : false 
     let qwe = CLLocationCoordinate2DMake(latitude!,longitude!) 
     let asd = Map.convert(qwe, toPointTo: Map) 
     let test = Map.convert(asd, toCoordinateFrom: Map) 
     print("test lat: " + String(test.latitude)) 
     print("test lon: " + String(test.longitude)) 


     let path = UIBezierPath(arcCenter: Map.convert (qwe, toPointTo: mapController.Map), radius: CGFloat(radius!), startAngle: CGFloat(Helper.toRad(startingAzimuth!)), endAngle: CGFloat(Helper.toRad(endingAzimuth!)) , clockwise: clockwise) 
     let arc = MKCircle(center: CLLocationCoordinate2DMake(latitude!, longitude!), radius: radius!) 
     arc.accessibilityPath = path 
     Map.add(arc) 
    } 

и мой MAPview:

func mapView(_ mapView: MKMapView, rendererFor overlay: MKOverlay) -> MKOverlayRenderer 
    { 
     if overlay is MKCircle 
     { 
      print("overlay latitude: "+String(overlay.coordinate.latitude)) 
      print("overlay longitude: "+String(overlay.coordinate.longitude)) 
      let circleOverlay = overlay as! MKCircle 
      if(circleOverlay.accessibilityPath != nil) 
      { 
       let arcRenderer = MKOverlayPathRenderer() 
       arcRenderer.path = circleOverlay.accessibilityPath?.cgPath 
       arcRenderer.strokeColor = UIColor.red 
       arcRenderer.lineWidth = 10 
       arcRenderer.alpha = 0.3 
       return arcRenderer 
      } 
      let circle = MKCircleRenderer(overlay: overlay) 
      circle.strokeColor = UIColor.black 
      circle.fillColor = UIColor(red: 255, green: 0, blue: 0, alpha: 0.1) 
      circle.lineWidth = 1 
      circle.alpha = 0.3 
      return circle 
     } 
} 

Я думаю, это потому, что я не правильно конвертировать CLLocationCoordinate2D в CGPoint, потому что пару недель назад я сумел нарисовать дугу, но с неправильными координатами (не помню, как я это сделал).

ответ

1

Это то, что вы ищете http://nshipster.com/mkgeodesicpolyline/?

+0

Нет, но это может быть полезно) Мне нужно нарисовать дугу, пользовательские входы центра, радиуса, азимута начала и конца азимута - мне нужно, чтобы он нарисовал путь вокруг какого-то объекта – Jamil

Смежные вопросы