Цвета сгруппированных объектов на основе количества сгруппированных точек

Я разрабатываю приложение с использованием Xamarin.iOS и Mapbox iOS SDK (пакет NuGet Naxam.Mapbox.iOS здесь. И я следую этому примеру на веб-сайте MapBox iOS SDK: https://docs.mapbox.com/ios/maps/examples/clustering/.

И у меня проблемы с преобразованием этой части кода в C #:

// Color clustered features based on clustered point counts.
let stops = [
    20: UIColor.lightGray,
    50: UIColor.orange,
    100: UIColor.red,
    200: UIColor.purple
]

А также:

circlesLayer.circleColor = NSExpression(format: "mgl_step:from:stops:(point_count, %@, %@)", UIColor.lightGray, stops)

Я могу установить уникальный цвет для кластера, если сделаю это так:

circlesLayer.CircleColor = NSExpression.FromConstant(FromObject(UIColor.Green));

Но мне не удается это сделать, если я следую примеру, в нем формат выражения принимает 3 параметра: строка, UiColor, массив

Но в C # NSExpression.FromConstant принимает максимум 2 параметра: строка и NSObject [], поэтому я создал это: (чтобы соответствовать массиву "стопов" в примере)

NSDictionary[] stops = new NSDictionary[]
{
    new NSDictionary(new NSNumber(0), FromObject(UIColor.Green)),
    new NSDictionary(new NSNumber(20), FromObject(UIColor.Blue)),
    new NSDictionary(new NSNumber(100), FromObject(UIColor.Red))
};

Но это безуспешно, что мне делать вместо этого?


person Ricardo Dias Morais    schedule 31.05.2019    source источник


Ответы (3)


Попробуй это:

NSDictionary[] stops = new NSDictionary[]
{
    new NSDictionary(new NSNumber(0f), FromObject(UIColor.Green)),
    new NSDictionary(new NSNumber(20f), FromObject(UIColor.Blue)),
    new NSDictionary(new NSNumber(100f), FromObject(UIColor.Red))
};

Использование nsfloat может быть лучшим решением

person Community    schedule 12.06.2019

Это должно быть nsfloat, а не целое число, поэтому определите первый параметр следующим образом:

new NSNumber(0f)
person Francisco68    schedule 27.06.2019

Вы можете использовать NSExpression.FromFormat(string format, NSObject [] parameters) для этой цели.

Что-то вроде этого:

circlesLayer.CircleColor = NSExpression.FromFormat ("mgl_step:from:stops:(point_count, %@, %@)", stops)

Где stops - это то, что у вас было выше со словарем.

person miguel.de.icaza    schedule 01.06.2019
comment
Я уже пробовал это, думаю, я не объяснил правильно, когда сказал: Но в С # NSExpression.FromConstant принимает максимум 2 параметра: строка и NSObject [], поэтому я создал это: (чтобы сопоставить массив останавливается в пример), это означает, что я использовал свой NSDictionary в параметре NSObject [], и да, это должно быть решение, но оно не работает, спасибо за помощь - person Ricardo Dias Morais; 03.06.2019