我正在将我的应用程序移至 Mapbox,而我所坚持的事情之一是创建一条彩色多段线,其中段颜色根据速度动态设置。我能做的最接近的事情是创建一组不同颜色的线,并将它们添加到地图中,就像许多单独的线一样,但处理时间和帧速率下降太多,更不用说你可以看到不同的线段。使用 MapKit 或 Google 地图可以轻松实现这一点,但据我所知,Mapbox 中的折线只能有一种颜色。
这里有人问了一个非常类似的问题,但那是 3 年前的事了,答案似乎与使用方向 API 相关。
基本功能如下所示,我创建了一个自定义 MGLMulticolorPolyline 类,以便我可以设置颜色
func locationPolyLine(locations : [Location], averageSpeed: Double, topSpeed: Double) -> [MGLMulticolorPolyline] {
var coordinates: [(CLLocation, CLLocation)] = []
var speeds: [Double] = []
let smallerLocationArray = locations.enumerated().filter({ index, _ in
index % 2 != 0
}).map { $0.1 }
for (first, second) in zip(smallerLocationArray, smallerLocationArray.dropFirst()) {
//create an array of coordinates
let start = CLLocation(latitude: first.locLatitude, longitude: first.locLongitude)
let end = CLLocation(latitude: second.locLatitude, longitude: second.locLongitude) …Run Code Online (Sandbox Code Playgroud)