labelsPlacement property

MapLegendLabelsPlacement? labelsPlacement
final

Place the labels either between the segments or on the segments.

By default, label placement will beMapLegendLabelsPlacement.betweenItems when setting range color mapper without setting color mapper text property otherwise label placement will be MapLegendLabelsPlacement.onItem.

This snippet shows how to set label placement in SfMaps.

late List<DataModel> _data;
late MapShapeSource _mapSource;

 @override
 void initState() {
   super.initState();

   _data = <DataModel>[
     DataModel('India', 280, "Low"),
     DataModel('United States of America', 190, "High"),
     DataModel('Pakistan', 37, "Low"),
   ];

   _mapSource = MapShapeSource.asset(
     "assets/world_map.json",
     shapeDataField: "name",
     dataCount: _data.length,
     primaryValueMapper: (int index) {
       return _data[index].country;
     },
     shapeColorValueMapper: (int index) {
       return _data[index].storage;
     },
     shapeColorMappers: [
       MapColorMapper(value: "Low", color: Colors.red),
       MapColorMapper(value: "High", color: Colors.green)
     ],
   );
 }

 @override
 Widget build(BuildContext context) {
   return Scaffold(
     appBar: AppBar(
       title: Text('Bar legend'),
     ),
     body: Center(
       child: SfMaps(
         layers: [
           MapShapeLayer(
             source: _mapSource,
             legend: MapLegend.bar(
               MapElement.shape,
               labelsPlacement: MapLegendLabelsPlacement.onItem,
             ),
           )
         ],
       ),
     ),
   );
 }

class DataModel {
  const DataModel(this.country, this.count, this.storage);

  final String country;
  final double count;
  final String storage;
}

See also:

  • edgeLabelsPlacement, to place the edge labels either inside or outside of the bar legend.

  • labelOverflow, to trims or removes the legend text when it is overflowed from the bar legend.

Implementation

final MapLegendLabelsPlacement? labelsPlacement;