2

我正在使用 Xamarin.iOS 和 Mapbox iOS SDK 开发一个应用程序(这里是 Naxam.Mapbox.iOS NuGet 包。我在 MapBox iOS SDK 网站中遵循这个示例:https ://docs.mapbox.com/ios/maps /示例/集群/

我在将这部分代码转换为 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[],所以我创建了这个:(以匹配示例中的数组“stops”)

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

但它没有成功,我应该怎么做呢?

4

3 回答 3

1

它应该是一个 nsfloat 而不是一个整数,所以像这样定义第一个参数:

new NSNumber(0f)
于 2019-06-27T11:38:45.770 回答
0

您可以NSExpression.FromFormat(string format, NSObject [] parameters)用于此目的。

像这样的东西:

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

stops你上面的字典在哪里。

于 2019-06-01T17:14:28.180 回答
0

尝试这个:

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 可能是要走的路

于 2019-06-12T10:16:38.347 回答