- Adding data labels
- Setting contrast color
- Customizing data labels
- To smartly align data labels
- To avoid overlap in data labels
Contact Support
Data Labels in Xamarin.Android Maps (SfMaps)
8 Jan 202516 minutes to read
Data labels are used to display the values of shapes.
Adding data labels
The ShowItems
property, which is a boolean property, displays or hides the data labels in shapes. Set the ShapeValuePath
property to get the data labels bound to each shape.
SfMaps maps = new SfMaps(this);
ShapeFileLayer layer = new ShapeFileLayer();
layer.Uri = "usa_state.shp";
layer.ShowItems = true;
layer.ShapeSettings.ShapeFill = Color.LightGray;
layer.DataSource = GetDataSource();
layer.ShapeIdPath = "Name";
layer.ShapeIdTableField = "STATE_NAME";
layer.ShapeSettings.ShapeValuePath = "ShortName";
maps.Layers.Add(layer);
SetContentView(maps);
You can use below collection as a datasource of SfMaps.
JSONArray GetDataSource()
{
JSONArray array = new JSONArray();
array.Put(getJsonObject("Alabama", "AL",49));
array.Put(getJsonObject("Alaska", "AK",43));
array.Put(getJsonObject("Arizona", "AZ",31));
array.Put(getJsonObject("Arkansas", "AR",36));
array.Put(getJsonObject("California", "CA",50));
array.Put(getJsonObject("Colorado", "CO",9));
array.Put(getJsonObject("Connecticut", "CT",3));
array.Put(getJsonObject("Florida", "FL",29));
array.Put(getJsonObject("Georgia", "GA",36));
array.Put(getJsonObject("Hawaii", "HI",4));
array.Put(getJsonObject("Idaho", "ID",4));
array.Put(getJsonObject("Illinois", "IL",20));
array.Put(getJsonObject("Indiana", "IN",11));
array.Put(getJsonObject("Iowa", "IA",6));
array.Put(getJsonObject("Kansas", "KS",6));
array.Put(getJsonObject("Kentucky", "KY",38));
array.Put(getJsonObject("Louisiana", "LA",48));
array.Put(getJsonObject("Maine", "ME",34));
array.Put(getJsonObject("Maryland", "MD",10));
array.Put(getJsonObject("Michigan", "MI",16));
array.Put(getJsonObject("Minnesota", "MN",10));
array.Put(getJsonObject("Mississippi", "MS",36));
array.Put(getJsonObject("Missouri", "MO",3));
array.Put(getJsonObject("Montana", "MT",3));
array.Put(getJsonObject("Nebraska", "NE",5));
array.Put(getJsonObject("Nevada", "NV",6));
array.Put(getJsonObject("New Jersey", "NJ",34));
array.Put(getJsonObject("New Mexico", "NM",35));
array.Put(getJsonObject("New York", "NY",29));
array.Put(getJsonObject("North Carolina", "NC",35));
array.Put(getJsonObject("North Dakota", "ND",3));
array.Put(getJsonObject("Ohio", "OH",18));
array.Put(getJsonObject("Oklahoma", "OK",47));
array.Put(getJsonObject("Oregon", "OR",7));
array.Put(getJsonObject("Pennsylvania", "PA",40));
array.Put(getJsonObject("Rhode Island", "RI",4));
array.Put(getJsonObject("South Carolina", "SC",39));
array.Put(getJsonObject("South Dakota", "SD",3));
array.Put(getJsonObject("Tennessee", "TN",41));
array.Put(getJsonObject("Texas", "TX",38));
array.Put(getJsonObject("Utah", "UT",6));
array.Put(getJsonObject("Vermont", "VT",3));
array.Put(getJsonObject("Virginia", "VA",43));
array.Put(getJsonObject("Washington", "WA",12));
array.Put(getJsonObject("West Virginia", "WV",35));
array.Put(getJsonObject("Wisconsin", "WI",10));
array.Put(getJsonObject("Wyoming", "WY",3));
return array;
}
JSONObject getJsonObject(String name, String shortname, double count)
{
JSONObject obj = new JSONObject();
obj.Put("Name", name);
obj.Put("ShortName", shortname);
obj.Put("Count", count);
return obj;
}
Setting contrast color
Based on the background color of the shapes, contrast color will be applied to data labels.
SfMaps maps = new SfMaps(this);
ShapeFileLayer layer = new ShapeFileLayer();
layer.Uri = "usa_state.shp";
layer.ShowItems = true;
layer.DataSource = GetDataSource();
layer.ShapeIdPath = "Name";
layer.ShapeIdTableField = "STATE_NAME";
layer.ShapeSettings.ShapeValuePath = "ShortName";
layer.ShapeSettings.ShapeColorValuePath = "Count";
RangeColorMapping rangeColorMapping = new RangeColorMapping();
rangeColorMapping.From = 0;
rangeColorMapping.To = 25;
rangeColorMapping.Color = Color.ParseColor("#FFD84F");
RangeColorMapping rangeColorMapping1 = new RangeColorMapping();
rangeColorMapping1.From = 25;
rangeColorMapping1.To = 50;
rangeColorMapping1.Color = Color.ParseColor("#316DB5");
layer.ShapeSettings.ColorMapping.Add(rangeColorMapping);
layer.ShapeSettings.ColorMapping.Add(rangeColorMapping1);
DataLabelSetting dataLabelSetting = new DataLabelSetting();
dataLabelSetting.SmartLabelMode = IntersectAction.Trim;
layer.DataLabelSettings = dataLabelSetting;
maps.Layers.Add(layer);
SetContentView(maps);
Customizing data labels
Data labels can be customized using the DataLabelSetting
property in shape file layer. The typeface, color, and text size can be customized using the Typeface
, TextColor
, and TextSize
properties.
SfMaps maps = new SfMaps(this);
ShapeFileLayer layer = new ShapeFileLayer();
layer.Uri = "usa_state.shp";
layer.ShowItems = true;
layer.ShapeSettings.ShapeFill = Color.LightGray;
layer.DataSource = GetDataSource();
layer.ShapeIdPath = "Name";
layer.ShapeIdTableField = "STATE_NAME";
layer.ShapeSettings.ShapeValuePath = "ShortName";
DataLabelSetting dataLabelSetting = new DataLabelSetting();
dataLabelSetting.TextColor = Color.Blue;
dataLabelSetting.Typeface = Typeface.Create("cursive", TypefaceStyle.Italic);
dataLabelSetting.TextSize = 12;
layer.DataLabelSettings = dataLabelSetting;
maps.Layers.Add(layer);
SetContentView(maps);
To smartly align data labels
The SmartLabelMode
property aligns the labels smartly within shape boundaries and avoids labels overlapping. Labels can be customized using the Hide
, Trim
, and None
options.
SfMaps maps = new SfMaps(this);
ShapeFileLayer layer = new ShapeFileLayer();
layer.Uri = "usa_state.shp";
layer.ShowItems = true;
layer.DataSource = GetDataSource();
layer.ShapeIdPath = "Name";
layer.ShapeIdTableField = "STATE_NAME";
layer.ShapeSettings.ShapeValuePath = "Name";
layer.ShapeSettings.ShapeColorValuePath = "Count";
layer.ShapeSettings.ShapeFill = Color.LightGray;
DataLabelSetting dataLabelSetting = new DataLabelSetting();
dataLabelSetting.SmartLabelMode = IntersectAction.Trim;
layer.DataLabelSettings = dataLabelSetting;
maps.Layers.Add(layer);
SetContentView(maps);
To avoid overlap in data labels
The IntersectionAction
property aligns labels that overlap. Labels can be customized using the Hide
, Trim
, and None
options. First, set the SmartLabelMode
property to None
.
SfMaps maps = new SfMaps(this);
ShapeFileLayer layer = new ShapeFileLayer();
layer.Uri = "usa_state.shp";
layer.ShowItems = true;
layer.DataSource = GetDataSource();
layer.ShapeIdPath = "Name";
layer.ShapeIdTableField = "STATE_NAME";
layer.ShapeSettings.ShapeValuePath = "Name";
layer.ShapeSettings.ShapeColorValuePath = "Count";
layer.ShapeSettings.ShapeFill = Color.LightGray;
DataLabelSetting dataLabelSetting = new DataLabelSetting();
dataLabelSetting.IntersectionAction = IntersectAction.Hide;
dataLabelSetting.SmartLabelMode = IntersectAction.None;
layer.DataLabelSettings = dataLabelSetting;
maps.Layers.Add(layer);
SetContentView(maps);