0
我發現區分MKPolygons的唯一方法是使用MKPolygon.version(Int:Int)類型屬性。我可以將它設置爲1,2,3等,並給每個人一個不同的顏色(例如)。我想擴展MKPolygon以添加標籤,但Swift擴展無法添加存儲的屬性。我不舒服使用MKPolygon.version(我應該?)。有沒有更好的辦法?如何區分幾個不同的MKPolygon疊加層,以便我可以給每個不同的屬性?
我發現區分MKPolygons的唯一方法是使用MKPolygon.version(Int:Int)類型屬性。我可以將它設置爲1,2,3等,並給每個人一個不同的顏色(例如)。我想擴展MKPolygon以添加標籤,但Swift擴展無法添加存儲的屬性。我不舒服使用MKPolygon.version(我應該?)。有沒有更好的辦法?如何區分幾個不同的MKPolygon疊加層,以便我可以給每個不同的屬性?
子類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之間來回移動,所以一些函數聲明可能不匹配)
嘗試繼承MKPolygon –
工作過!謝謝@DavidBerry。我實際上創建了一個...靜態var標識=「藍色」等,然後在mapView(_:rendererForOverlay :)方法我用...如果讓overlay =覆蓋爲? MyPolygon && MyPolygon.identifier ==「藍色」。現在可以添加不同顏色和道具的多個多邊形。 – KeithRussell