Динамическое создание выражения с помощью Mapbox Maps iOS SDK v10?IOS

Программируем под IOS
Ответить Пред. темаСлед. тема
Anonymous
 Динамическое создание выражения с помощью Mapbox Maps iOS SDK v10?

Сообщение Anonymous »

Я использую в приложении Mapbox Maps iOS SDK v10, и у меня есть слой, который отображает на карте круги, обозначающие расположение различных объектов. Каждый объект имеет несколько свойств, включая строковый «тип», например «АВТОМОБИЛЬ», «ЛОДКА», «САМОЛЕТ» и т. д. Я использую выражение цвета, чтобы определить, какого цвета должен быть каждый круг, на основе значения «типа» объекта. особенность. В настоящее время это выражение строится следующим образом:

Код: Выделить всё

let colorExpression = Exp(.match) {
Exp(.get) { "type" }
"CAR"
UIColor.systemBlue
"BOAT"
UIColor.systemRed
"AIRCRAFT"
UIColor.systemGreen
UIColor.systemGray // default color if some other "type" value
}
Поначалу это работало достаточно хорошо, поскольку существовало ограниченное количество значений для свойства «тип» объекта, поэтому жесткое кодирование этих значений было работоспособным решением. Однако данные объектов поступают с сервера, и время от времени вводятся новые «типы» объектов. Поэтому вместо того, чтобы добавлять дополнительные жестко закодированные значения типов и создавать новую сборку приложения каждый раз, когда это происходит (о чем я не всегда знаю заранее), я бы хотел иметь возможность создавать это выражение «динамически». " используя данные, которые я получаю обратно от вызова API на сервер.
Например, предположим, что после десериализации у меня есть типы и значения UIColor в словаре, например:

Код: Выделить всё

var typeColors: [String: UIColor] = [
"CAR" : UIColor.systemBlue,
"BOAT" : UIColor.systemRed,
"AIRCRAFT" : UIColor.systemGreen,
"BICYCLE" : UIColor.systemYellow
]
Я хотел бы перебрать этот словарь и построить выражение цвета, используя эти пары ключ-значение. Что-то вроде:

Код: Выделить всё

var typeColorArray: [Any] = []
for (k, v) in typeColors {
typeColorArray.append(k)
typeColorArray.append(v)
}

let colorExpression = Exp(.match) {
Exp(.get) { "type" }
typeColorArray
UIColor.systemGray // default color if some other "type" value
}
Документация Mapbox iOS SDK не очень многословна в отношении выражения DSL, и мне не удалось найти подобный пример в примерах, размещенных в репозитории GitHub (https:// github.com/mapbox/mapbox-maps-ios/tree/main/Apps/Examples/Examples/All%20Examples). Кто-нибудь знает, возможно ли создать такое цветовое выражение?

Подробнее здесь: https://stackoverflow.com/questions/774 ... os-sdk-v10
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «IOS»