Цвет кластеризованных объектов на основе количества кластеризованных точек - PullRequest
0 голосов
/ 31 мая 2019

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

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

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

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))
};

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

Ответы [ 3 ]

1 голос
/ 27 июня 2019

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

new NSNumber(0f)
0 голосов
/ 12 июня 2019

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

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 может быть подходящим вариантом

0 голосов
/ 01 июня 2019

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

Примерно так:

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

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

...