首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将NSExpression转换为MGLStyleValue<>

将NSExpression转换为MGLStyleValue<>
EN

Stack Overflow用户
提问于 2018-05-23 18:00:07
回答 1查看 559关注 0票数 2

我试着做:

代码语言:javascript
复制
var cards = [MGLPolygonFeature]()
for card in cardsArray {
    let polygon = MGLPolygonFeature(coordinates: &coordinates, count: UInt(coordinates.count))
    polygon.attributes = ["name": card.name]

    cards.append(polygon)
}

let cardSource = MGLShapeSource(identifier: "cards", features: cards, options: [:])
mapView.style?.addSource(cardSource)

let labelLayer = MGLSymbolStyleLayer(identifier: "card-labels", source: cardSource)
labelLayer.text = NSExpression(format: "CAST(address, 'NSString')")
labelLayer.textOpacity = 
    NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", [16: 0, 17: 1])

但由于错误,它不起作用:

无法将类型NSExpression的值赋值给MGLStyleValue类型。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-23 23:18:41

看起来,您正在尝试使用带有3.x版本的Maps SDK的NSExpression。在这种情况下,您将需要使用MGLStyleValue。您可能想尝试这样的方法:

代码语言:javascript
复制
 let stops = [16: MGLStyleValue(rawValue: 0),
              17: MGLStyleValue(rawValue: 1)
 ]
 labelLayer.textOpacity = MGLStyleValue(interpolationMode: .exponential,
        cameraStops: stops,
        options: nil)

您可以找到预V4.x示例代码,用于设置图层的不透明度这里。您可能还会发现v3.7.8文件很有用。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50494704

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档