Цвет кластеризованных объектов на основе количества кластеризованных точек. (Переход к 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 может быть способом пойти