热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

子类化MKGeodesicPolyline

如何解决《子类化MKGeodesicPolyline》经验,有好办法吗?

我正在尝试子类化MKPolylineMKGeodesicPolyline存储他们自己的颜色(通过让子类实例返回自己的颜色MKPolylineRenderer).它工作正常MKPolyline,但我的MKGeodesicPolyline子类的实例不是子类 - 只是MKGeodesicPolylines.有谁能解释为什么?这是我的代码......

protocol MapLineProtocol: MKOverlay {
    var width: CGFloat { get set }
    var colour: UIColor { get set }
}
extension MapLineProtocol {
    var renderer: MKPolylineRenderer {
        let polylineRenderer = MKPolylineRenderer(overlay: self)
        polylineRenderer.strokeColor = self.colour
        polylineRenderer.lineWidth = self.width
        return polylineRenderer
    }
}
class MapLine: MKPolyline, MapLineProtocol {
    var width: CGFloat = 3
    var colour: UIColor = .blue
    convenience init(start: CLLocationCoordinate2D, end: CLLocationCoordinate2D) {
        let line = [start, end]
        self.init(coordinates: line, count: line.count)
    }
}
class MapGeodesic: MKGeodesicPolyline, MapLineProtocol {
    var width: CGFloat = 3
    var colour: UIColor = .red
    convenience init(start: CLLocationCoordinate2D, end: CLLocationCoordinate2D) {
        let line = [start, end]
        self.init(coordinates: line, count: line.count)
    }
}

let mapLine = MapLine(start: loc.coordinate, end: end)
print("Mapline subclass: \(mapLine)") // 
self.mapView.add(mapLine)
let geoLine = MapGeodesic(start: loc.coordinate, end: end)
print("Geodesic subclass: \(geoLine)") //  !!!
self.mapView.add(geoLine)

访问.colour属性mapLine很好(并且渲染器可以工作),但访问.colourgeoLine会导致运行时异常(当然,如果绕过颜色,渲染器也不起作用).有人可以解释一下吗?


推荐阅读
author-avatar
艺卓显示、巴可投影
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有