2016-08-15 4 views
0

MKPolygons를 구분하는 유일한 방법은 MKPolygon.version (Int : Int) 형식 속성을 사용하는 것입니다. 나는 이것을 1,2,3 등으로 설정할 수 있고 각각 다른 색을 줄 수있다 (예를 들면). 태그를 추가하기 위해 MKPolygon을 확장하려고했지만 Swift 확장은 저장된 속성을 추가 할 수 없습니다. 나는 MKPolygon.version을 사용하는 것이 편하지 않다. 더 좋은 방법이 있습니까? 이몇 가지 별개의 MKPolygon 오버레이를 구분하여 각 속성마다 서로 다른 속성을 부여 할 수 있습니까?

+0

MKPolygon 서브 클래스를 시도해보십시오 –

+0

대담한 작업! @DavidBerry에게 감사합니다. 나는 실제로 ... 정적 var identifier = "Blue"등을 생성 한 다음 mapView (_ : rendererForOverlay :) 메소드에서 사용했습니다 ... if overlay = overlay as if? MyPolygon && MyPolygon.identifier == "파란색". 이제 다양한 색상과 소도구의 여러 다각형을 추가 할 수 있습니다. – KeithRussell

답변

0

서브 클래스 MKPolygon 넣어 사용자 정의 속성 :

class MyPolygon: MKPolygon { 
    var identifier: String? 
} 

는 그 다음 mapView(_:rendererForOverlay:) 방법, 클래스로 변환 :

func mapView(_ mapView: MKMapView, rendererForOverlay overlay: MKOverlay) -> MKOverlayRenderer { 
    if let overlay = overlay as? MyPolygon { 
     let identifier = overlay.identifier 
     // Do stuffs.... 
    } 
} 

(나는 엑스 코드와 애플의 설명서 사이트 근처에 아니에요 Swift 2와 Swift 3 사이에서 앞뒤로 움직이기 때문에 일부 함수 선언이 일치하지 않을 수 있습니다.)

관련 문제