2016-10-11 9 views
3

2つの角度、中心点、半径を入力として弧を描く必要があります。 UIBezierPathを使用しますが、オーバーレイはマップに追加されません。私は数週間前、私は弧を描くように管理しているため、私は正しく、CGPointCLLocationCoordinate2Dを変換していないからだと推測swift:MapKit経由でマップに円弧を描く方法は?

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 
     } 
} 

、しかし:

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:ここに私のコードです間違った座標で(どのように私はそれを覚えていない)。

答えて

1

これはあなたが探しているものですhttp://nshipster.com/mkgeodesicpolyline/

+0

いいえ、それは役に立つかもしれません) 私は円弧を描く必要があります、ユーザーの入力中心、半径、開始方位角と終了方位角 - 私はいくつかのオブジェクトの周りのパスを描画する必要があります – Jamil

関連する問題