Как создать словарь в выражении NSE со значениями из другого выражения NSE? (Mgl_interpolate) - PullRequest
0 голосов
/ 28 июня 2019

Я адаптирую этот пример и нахожу контрольно-пропускной пункт: https://docs.mapbox.com/ios/maps/examples/runtime-multiple-annotations/

let style = mapView.style
var features = [MGLPointFeature]()

for item in items {

   let feature = MGLPointFeature()
   feature.coordinate = CLLocationCoordinate2D(latitude: item.lat, longitude: item.lon)
   feature.title = item.title

  // A feature’s attributes can used by runtime styling for things like text labels.
   feature.attributes = [
      "name": item.title,
      "pin": item.pin,
      "zoomLevel": item.zoomLevel
   ]

    features.append(feature)
}                        

let source = MGLShapeSource(identifier: "pois", features: features, options: nil)

style.addSource(source)

let symbols = MGLSymbolStyleLayer(identifier: "symbols", source: source)
symbols.iconImageName = NSExpression(forKeyPath: "pin")
//...
symbols.iconOpacity = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)",
[5.9: 0, 6: 1])

style.addLayer(symbols)

В следующей строке я хочу установить iconOpacity для символа индивидуально с помощью zoomLevel.

symbols.iconOpacity = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)",
[5.9: 0, 6: 1])

Например:
символ 1 появляется, когда он пересекает zoomLevel 6
символ 2 появляется, когда он пересекает zoomLevel 10

Поэтому я расширил функцию атрибутом «zoomLevel», чтобы он был доступен как NSExpression(forKeyPath: "zoomLevel").

Но как мне создать словарь? Что-то вроде

symbols.iconOpacity = NSExpression(format: "mgl_interpolate:withCurveType:parameters:stops:($zoomLevel, 'linear', nil, %@)", [NSExpression(forKeyPath: "zoomLevel")-0.1:0, NSExpression(forKeyPath: "zoomLevel"):1])

не сработает.

Спасибо за ваш вклад!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...