diff --git a/lib/compassMapPlugin.dart b/lib/compassMapPlugin.dart new file mode 100644 index 0000000..922ec45 --- /dev/null +++ b/lib/compassMapPlugin.dart @@ -0,0 +1,41 @@ +import 'package:comunes_flutter/comunes_flutter.dart'; +import 'package:flutter/material.dart'; +import 'package:flutter_map/flutter_map.dart'; + +/// Compass button widget for resetting map rotation to north +class CompassMapPluginWidget extends StatelessWidget { + @override + Widget build(BuildContext context) { + return LayoutBuilder( + builder: (context, constraints) => + Stack(fit: StackFit.expand, children: [ + Positioned( + top: 10.0, + right: 10.0, + child: new CenteredRow( + children: [ + new Column( + children: [ + _compassButton(context), + ], + ) + ], + ), + ) + ])); + } + + FloatingActionButton _compassButton(BuildContext context) { + return FloatingActionButton( + backgroundColor: Colors.black26, + mini: true, + heroTag: 'compass_button', + onPressed: () { + final controller = MapController.of(context); + // Reset rotation to 0 (north) while keeping center and zoom + controller.rotate(0); + }, + child: Icon(Icons.explore), + ); + } +} diff --git a/lib/genericMap.dart b/lib/genericMap.dart index a15858d..3618315 100644 --- a/lib/genericMap.dart +++ b/lib/genericMap.dart @@ -10,6 +10,7 @@ import 'package:share_plus/share_plus.dart'; import 'attributionMapPlugin.dart'; import 'colors.dart'; +import 'compassMapPlugin.dart'; import 'customMoment.dart'; import 'dummyMapPlugin.dart'; import 'fireMarkType.dart'; @@ -223,6 +224,7 @@ class _genericMapState extends State { globals.isDevelopment ? new ZoomMapPluginWidget() : new DummyMapPluginWidget(), + new CompassMapPluginWidget(), new MarkerLayer( markers: buildMarkers( mapState.status == FireMapStatus.viewFireNotification && diff --git a/lib/monitoredAreas.dart b/lib/monitoredAreas.dart index 44240bc..cd9d0a0 100644 --- a/lib/monitoredAreas.dart +++ b/lib/monitoredAreas.dart @@ -4,6 +4,7 @@ import 'package:flutter_redux/flutter_redux.dart'; import 'package:latlong2/latlong.dart'; import 'colors.dart'; +import 'compassMapPlugin.dart'; import 'customBottomAppBar.dart'; import 'generated/i18n.dart'; import 'mainDrawer.dart'; @@ -84,6 +85,7 @@ class MonitoredAreasPage extends StatelessWidget { subdomains: ['a', 'b', 'c', 'd'], userAgentPackageName: 'com.example.fires_flutter'), + new CompassMapPluginWidget(), new PolylineLayer( polylines: view.monitoredAreas, )