问题描述
我很难弄清楚如何在 iOS 中使用 Swift 结合不同的缩放级别将匹配应用于轮廓索引值,以根据索引值设置不同的线宽样式。从@缩放级别 9 开始,索引值为 10 的行表示为 1.5,索引值为 5 的行为 1,其他所有行默认为 0.5。这是等效的 JSON:
[
"interpolate",["linear"],["zoom"],9,[
"match",["get","index"],[10],1.5,[5],1,0.5
],16,3,2,1
]
]
如果这只是一个问题,所有行的宽度都相同,我明白我会怎么做:
layer.linewidth = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel,'linear',nil,%@)",[9: 1,16: 2])
有没有办法用另一个包含 MGL_MATCH 的 NSExpression 替换 1 和 2(分别在 9 和 16 之后),例如:
let linewidthStops = [
NSExpression(format: "MGL_MATCH(index,10,%@,5,1.0,0.5),NSExpression(format: "MGL_MATCH(index,3.0,1.0)
]
contourLayer.linewidth = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel,[9: linewidthStops[0],16: linewidthStops[1]])