基于聚类点计数的颜色聚类特征
Color clustered features based on clustered point counts
我正在使用 Xamarin.iOS 和 Mapbox iOS SDK(Naxam.Mapbox.iOS NuGet 包 here 开发应用程序。
我在 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 个参数:string、UiColor, 数组
但在 C# NSExpression.FromConstant
中,最多接受 2 个参数:string 和一个 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))
};
但是没有成功,我应该怎么做?
您可以使用 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 可能是可行的方法
它应该是一个 nsfloat 而不是一个整数,所以定义第一个参数是这样的:
new NSNumber(0f)
我正在使用 Xamarin.iOS 和 Mapbox iOS SDK(Naxam.Mapbox.iOS NuGet 包 here 开发应用程序。 我在 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 个参数:string、UiColor, 数组
但在 C# NSExpression.FromConstant
中,最多接受 2 个参数:string 和一个 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))
};
但是没有成功,我应该怎么做?
您可以使用 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 可能是可行的方法
它应该是一个 nsfloat 而不是一个整数,所以定义第一个参数是这样的:
new NSNumber(0f)