generic_map 0.8.3
generic_map: ^0.8.3 copied to clipboard
A generic maps api supporting Google Maps, Mapbox, OpenStreetMaps and MapLibre
example/lib/main.dart
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:flutter_dotenv/flutter_dotenv.dart';
import 'package:latlong2/latlong.dart';
import 'package:maplibre_gl/maplibre_gl.dart' as maplibre;
import 'package:widgetbook/widgetbook.dart';
import 'package:widgetbook/next.dart' as next;
import 'package:widgetbook_annotation/widgetbook_annotation.dart' as widgetbook;
import 'package:generic_map/generic_map.dart';
import 'main.directories.g.dart';
Future<void> main() async {
WidgetsFlutterBinding.ensureInitialized();
maplibre.MapLibreMap.useHybridComposition = true;
// await Geolocator.requestPermission();
await dotenv.load();
runApp(
const WidgetbookApp(),
);
// runApp(const FullScreenMap());
}
@widgetbook.App()
class WidgetbookApp extends StatelessWidget {
const WidgetbookApp({super.key});
@override
Widget build(BuildContext context) {
return Widgetbook.material(
directories: [
...directories,
],
themeMode: ThemeMode.system,
addons: [
InspectorAddon(),
next.DeviceFrameAddon(
Devices.all,
),
next.AlignmentAddon(
Alignment.center,
),
],
);
}
}
class FullScreenMap extends StatelessWidget {
const FullScreenMap({super.key});
@override
Widget build(BuildContext context) {
final isDark = true;
return MaterialApp(
title: 'Basic Material App',
theme: ThemeData(
primarySwatch: Colors.blue,
),
debugShowCheckedModeBanner: false,
home: SizedBox(
width: MediaQuery.sizeOf(context).width,
height: MediaQuery.sizeOf(context).height,
child: GenericMap(
interactive: true,
onMapMoved: (p0, zoom) {
if (kDebugMode) {
print("Map moved to: $p0 with zoom: $zoom");
}
},
addressResolver: (p0, p1) async {
return Place(
p1,
'San Francisco, CA',
'San Francisco',
);
},
platformMapProviderSettings: PlatformMapProviderSettings(
defaultProvider: MapProviderEnum.mapBoxSDK,
),
googleMapOptions: GoogleMapsOptions(),
mapLibreOptions: MapLibreOptions(
apiKey: dotenv.maybeGet('MAPLIBRE_API_KEY') ?? "",
styleUrl: isDark
? dotenv.maybeGet('MAPLIBRE_STYLE_DARK_URL')
: dotenv.maybeGet('MAPLIBRE_STYLE_URL'),
),
mapboxOptions: MapboxOptions(
accessToken: dotenv.maybeGet('MAPBOX_ACCESS_TOKEN') ?? "",
styleTileSetId: 'navigation-night-v1',
),
mapboxSdkOptions: MapboxSdkOptions(
accessToken: dotenv.maybeGet('MAPBOX_ACCESS_TOKEN') ?? "",
style: MapboxSdkStyle.standard),
initialZoom: 19,
initialLocation: const Place(
LatLng(37.791714, -122.392249),
'San Francisco, CA',
'San Francisco',
),
),
),
);
}
}