2

我尝试了以下代码,但它绘制直线,我想要虚线

@IBOutlet var navigationView: MGLMapView!
var polyline: MGLPolyline!

 override func viewDidLoad() {
        super.viewDidLoad()

        var mapCoordinates: [CLLocationCoordinate2D] = []
        let newCoord1 = CLLocationCoordinate2D(latitude: 8.5241, longitude: 76.9366)
        let newCoord2 = CLLocationCoordinate2D(latitude:11.8745, longitude: 75.3704)

        mapCoordinates.append(newCoord1)
        mapCoordinates.append(newCoord2)

        polyline = MGLPolyline(coordinates: mapCoordinates, count: UInt(mapCoordinates.count))

        navigationView.add(polyline)
}
4

1 回答 1

5

一种选择是使用MGLLineStyleLayer具有lineDashPattern属性的 。

此示例显示如何添加虚线,但对于您的用例,它看起来更像:

func mapView(_ mapView: MGLMapView, didFinishLoading style: MGLStyle) {
            var mapCoordinates: [CLLocationCoordinate2D] = []
    let newCoord1 = CLLocationCoordinate2D(latitude: 8.5241, longitude: 76.9366)
    let newCoord2 = CLLocationCoordinate2D(latitude:11.8745, longitude: 75.3704)

    mapCoordinates.append(newCoord1)
    mapCoordinates.append(newCoord2)

    polyline = MGLPolyline(coordinates: mapCoordinates, count: UInt(mapCoordinates.count))

    source = MGLShapeSource(identifier: "line", shape: polyline, options: nil)
    style.addSource(source)

    let layer = MGLLineStyleLayer(identifier: "line-layer", source: source)
    layer.lineDashPattern = NSExpression(forConstantValue: [2, 1.5])
    style.addLayer(layer)
}

然后根据需要更新shape属性source

于 2018-07-30T19:45:50.877 回答