controller property
Provides option for adding, removing, deleting and updating marker collection.
You can also get the current markers count and selected shape's index from this.
late List<Model> _data;
late MapShapeLayerController _controller;
late MapShapeSource _mapSource;
Random _random = Random();
@override
void initState() {
_data = <Model>[
Model(-14.235004, -51.92528),
Model(51.16569, 10.451526),
Model(-25.274398, 133.775136),
Model(20.593684, 78.96288),
Model(61.52401, 105.318756)
];
_mapSource = MapShapeSource.asset(
"assets/world_map.json",
shapeDataField: "name",
);
_controller = MapShapeLayerController();
super.initState();
}
@override
Widget build(BuildContext context) {
return Scaffold(
body: Center(
child: Container(
height: 350,
child: Padding(
padding: EdgeInsets.only(left: 15, right: 15),
child: Column(
children: [
SfMaps(
layers: <MapLayer>[
MapShapeLayer(
source: _mapSource,
initialMarkersCount: 5,
markerBuilder: (BuildContext context, int index) {
return MapMarker(
latitude: _data[index].latitude,
longitude: _data[index].longitude,
child: Icon(Icons.add_location),
);
},
controller: _controller,
),
],
),
RaisedButton(
child: Text('Add marker'),
onPressed: () {
_data.add(Model(
-180 + _random.nextInt(360).toDouble(),
-55 + _random.nextInt(139).toDouble()));
_controller.insertMarker(5);
},
),
],
),
),
),
),
);
}
class Model {
Model(this.latitude, this.longitude);
final double latitude;
final double longitude;
}
Implementation
final MapShapeLayerController? controller;