gpt4 book ai didi

mapbox - 如何在 NSExpression 中结合 Mapbox mgl_interpolate 和 MGL_Match?

转载 作者:行者123 更新时间:2023-12-04 08:20:40 25 4
gpt4 key购买 nike

我很难弄清楚如何在 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,
[
"match",
["get", "index"],
[10],
3,
[5],
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.5, 1.0, 0.5),
NSExpression(format: "MGL_MATCH(index, 10, %@, 5, %@, %@)", 3.0, 1.5, 1.0)
]

contourLayer.lineWidth = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", [9: lineWidthStops[0], 16: lineWidthStops[1]])

最佳答案

是的,您可以在插值表达式中引用 NSExpressions 数组,但是,您需要更改字符串格式化程序 %@在您的 MGL_MATCH 表达式中将浮点数说明符 %f如下面的代码所示:

        let lineWidthStops = [
NSExpression(format: "MGL_MATCH(index, 10, %f, 5, %f, %f)", 1.5, 1.0, 0.5),
NSExpression(format: "MGL_MATCH(index, 10, %f, 5, %f, %f)", 5.0, 1.5, 1.0)
]
zoom 9
zoom 16

关于mapbox - 如何在 NSExpression 中结合 Mapbox mgl_interpolate 和 MGL_Match?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65514540/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com