Цвет кластеризованных объектов на основе количества кластеризованных точек. (Переход к C#)

Я занимаюсь разработкой приложения с использованием Xamarin.iOS и Mapbox iOS SDK (здесь находится пакет Naxam.Mapbox.iOS NuGet. И я следую этому примеру на веб-сайте 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));

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

Но в C# NSExpression.FromConstant, принимает максимум 2 параметра: string и 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))
};

Но это не успех, что я должен делать вместо этого?

1 ответ

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

new NSNumber(0f)

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

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

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

куда stops это то, что вы имели выше со словарем.

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

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 может быть способом пойти

Другие вопросы по тегам