2016-06-14 2 views
1

에 반 영역을 그리기 시작하고 해리의 끝 각도 및 반경. 자, 내가지도보기 MKPolyline를 생성하고 (지도보기에서 구현하기 위해 이것을 사용 어떻게 명확하지 않다스위프트 : 나는 MKMapView에 중심 좌표 알을 반 구체를 그릴 노력하고 MKMapView

import UIKit 
import MapKit 
class IGAAcarsDrawArc: MKOverlayPathRenderer 
{ 
    let PI = 3.14159265 
    let radius : CGFloat = 10.0 
    var startAngle: CGFloat = 0 
    var endAngle: CGFloat = 3.14159 
    var latitude = 25.96728611 
    var longitude = -80.453019440000006 

    override func createPath() 
    { 
     let line = MKPolyline() 

     let arcWidth: CGFloat = 5 

     let path = UIBezierPath(arcCenter: CGPointMake(CGFloat(latitude), CGFloat(longitude)), 
           radius: self.radius, 
           startAngle: startAngle, 
           endAngle: endAngle, 
           clockwise: true) 

     path.lineWidth = arcWidth 
     path.stroke() 
    } 
} 

:

호 그릴, 내가 MKOverlayPathRenderer 서브 클래 싱 한이 스레드 (How to draw UIBezierPath overlay on MKMapView?)를 사용하여 MKMapView를, 렌더러 오버레이 오버레이 : MKOverlay).

이 스레드 (How to draw arc/curve line with MKOverlayView on MKMapView 포함)는이 문제에 너무 많은 빛을 흘렸다하지 않습니다.

사람은 MKMapView의 호를 그리 도와 주시겠습니까?

편집 :

이 것은 작동하지 않습니다 :

func mapView(mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer 
{ 
    if overlay is IGAAcarsDrawArc 
     { 
      let arcLine = IGAAcarsDrawArc(overlay: overlay) 

      arcLine.lineWidth = 8 
      arcLine.strokeColor = UIColor.magentaColor() 
     } 


     return MKPolylineRenderer() 
} 

고마워요!

+0

찾았습니다. http://stackoverflow.com/questions/12062902/how-to-add-a-uibezierpath-to-a-mkmapview-using-overlays 어쩌면 그것은 당신에게 어떤 힌트를 줄 것입니다 – wenqi

+0

나는이 게시물을 발견했습니다 : http : //stackoverflow.com/questions/12062902/how-to-add-a-uibezierpath-to-a-mkmapview-using-overlays는 어쩌면 그것은 당신에게 감사 – wenqi

답변

0

당신은 경로를 그릴 수 있지만, 렌더러의 path 속성에 할당 안 :

서브 클래스를 오버라이드 (override) 및 도면에 사용하는 CGPathRef 데이터 유형을 작성하는 데 사용합니다. 경로를 생성 한 후 구현에서 path 속성에 경로를 할당해야합니다.

그래서
override func createPath() 
{ 
… 
    let path = UIBezierPath(arcCenter: CGPointMake(CGFloat(latitude), CGFloat(longitude)), 
          radius: self.radius, 
          startAngle: startAngle, 
          endAngle: endAngle, 
          clockwise: true) 

    path.lineWidth = arcWidth 
    self.path = path.cgPath // assign instead of stroke 
} 

사파리에 입력.

+0

몇 가지 힌트를 줄 것이다. 그러나, 나는 이미 그것을 시도했다. 나는 다음과 같은 오류가 표시되어 있기 때문에이 UIBezierPath 작동하지 않습니다 믿습니다... "값 유형의 'UIBezierPath가'더 멤버 'cgPath'물론 –

+0

, 그것은'CGPath' 오타 그러나이 오류 인 경우, 단순히이다가 없습니다 직접'CGPath' 인스턴스를 생성하십시오. –