如何区分几个不同的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