A Flutter plugin that provides a Google Maps widget.
| Android | iOS | |
|---|---|---|
| Support | SDK 20+ | iOS 9+ |
To use this plugin, add google_maps_flutter as a dependency in your pubspec.yaml file.
Get an API key at https://cloud.google.com/maps-platform/.
Enable Google Map SDK for each platform.
- Go to Google Developers Console.
- Choose the project that you want to enable Google Maps on.
- Select the navigation menu and then select "Google Maps".
- Select "APIs" under the Google Maps menu.
- To enable Google Maps for Android, select "Maps SDK for Android" in the "Additional APIs" section, then select "ENABLE".
- To enable Google Maps for iOS, select "Maps SDK for iOS" in the "Additional APIs" section, then select "ENABLE".
- Make sure the APIs you enabled are under the "Enabled APIs" section.
For more details, see Getting started with Google Maps Platform.
- Set the
minSdkVersioninandroid/app/build.gradle:
android {
defaultConfig {
minSdkVersion 20
}
}This means that app will only be available for users that run Android SDK 20 or higher.
- Specify your API key in the application manifest
android/app/src/main/AndroidManifest.xml:
<manifest ...
<application ...
<meta-data android:name="com.google.android.geo.API_KEY"android:value="YOUR KEY HERE"/>The Android implementation supports multiple platform view display modes. For details, see the Android README.
To set up, specify your API key in the application delegate ios/Runner/AppDelegate.m:
#include"AppDelegate.h"
#include"GeneratedPluginRegistrant.h"
#import"GoogleMaps/GoogleMaps.h"@implementationAppDelegate
- (BOOL)application:(UIApplication *)applicationdidFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
[GMSServices provideAPIKey:@"YOUR KEY HERE"];
[GeneratedPluginRegistrant registerWithRegistry:self];
return [superapplication:application didFinishLaunchingWithOptions:launchOptions];
}
@endOr in your swift code, specify your API key in the application delegate ios/Runner/AppDelegate.swift:
import UIKit
import Flutter
import GoogleMaps
@UIApplicationMain@objcclassAppDelegate:FlutterAppDelegate{overridefunc application(
_ application:UIApplication,
didFinishLaunchingWithOptions launchOptions:[UIApplication.LaunchOptionsKey:Any]?)->Bool{GMSServices.provideAPIKey("YOUR KEY HERE")GeneratedPluginRegistrant.register(with:self)return super.application(application, didFinishLaunchingWithOptions: launchOptions)}}You can now add a GoogleMap widget to your widget tree.
The map view can be controlled with the GoogleMapController that is passed to
the GoogleMap's onMapCreated callback.
classMapSampleextendsStatefulWidget {
constMapSample({Key? key}) :super(key: key);
@overrideState<MapSample> createState() =>MapSampleState();
}
classMapSampleStateextendsState<MapSample> {
finalCompleter<GoogleMapController> _controller =Completer<GoogleMapController>();
staticconstCameraPosition _kGooglePlex =CameraPosition(
target:LatLng(37.42796133580664, -122.085749655962),
zoom:14.4746,
);
staticconstCameraPosition _kLake =CameraPosition(
bearing:192.8334901395799,
target:LatLng(37.43296265331129, -122.08832357078792),
tilt:59.440717697143555,
zoom:19.151926040649414);
@overrideWidgetbuild(BuildContext context) {
returnScaffold(
body:GoogleMap(
mapType:MapType.hybrid,
initialCameraPosition: _kGooglePlex,
onMapCreated: (GoogleMapController controller) {
_controller.complete(controller);
},
),
floatingActionButton:FloatingActionButton.extended(
onPressed: _goToTheLake,
label:constText('To the lake!'),
icon:constIcon(Icons.directions_boat),
),
);
}
Future<void> _goToTheLake() async {
finalGoogleMapController controller =await _controller.future;
controller.animateCamera(CameraUpdate.newCameraPosition(_kLake));
}
}See the example directory for a complete sample app.