2016-08-15 20 views
0

我發現區分MKPolygons的唯一方法是使用MKPolygon.version(Int:Int)類型屬性。我可以將它設置爲1,2,3等,並給每個人一個不同的顏色(例如)。我想擴展MKPolygon以添加標籤,但Swift擴展無法添加存儲的屬性。我不舒服使用MKPolygon.version(我應該?)。有沒有更好的辦法?如何區分幾個不同的MKPolygon疊加層,以便我可以給每個不同的屬性?

+0

嘗試繼承MKPolygon –

+0

工作過!謝謝@DavidBerry。我實際上創建了一個...靜態var標識=「藍色」等,然後在mapView(_:rendererForOverlay :)方法我用...如果讓overlay =覆蓋爲? 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.... 
    } 
} 

(我不靠近​​Xcode和Apple的文檔網站在Swift 2和Swift 3之間來回移動,所以一些函數聲明可能不匹配)

相關問題