如何区分几个不同的MKPolygon叠加层,以便我可以给每个不同的属性?

问题描述:

我发现区分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

子类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之间来回移动,所以一些函数声明可能不匹配)