Symbol Layer
The SymbolLayer
is either used by the map style or can be added to the map
programmatically to symbolize data on the map.
Basic Usage
late final MapController _controller;
Widget build(BuildContext context) {
return MapLibreMap(
options: MapOptions(center: Position(9.17, 47.68)),
onMapCreated: (controller) => _controller = controller,
onStyleLoaded: () async {
// load the image data
final response = await http.get(Uri.parse(LayersSymbolPage.imageUrl));
final bytes = response.bodyBytes;
// add the image to the map
await _controller.addImage('marker', bytes);
// add some points as GeoJSON source to the map
await _controller.addSource(
const GeoJsonSource(
id: 'points',
data: _geoJsonString,
),
);
// display the image on the map
await _controller.addLayer(
const SymbolLayer(
id: 'images',
sourceId: 'points',
layout: {
// see https://maplibre.org/maplibre-style-spec/layers/#symbol
'icon-image': 'marker',
'icon-size': 0.08,
'icon-anchor': 'bottom',
},
),
);
}
);
}
Check out the example app to learn more.
Style & Layout
Use the paint
property to change the style and the layout
property to change the behavior on the map.
Read the Paint & Layout chapter to learn more on this topic.