Flutter地图展示插件google_maps_flutter的使用
Flutter地图展示插件google_maps_flutter的使用
Google Maps for Flutter
google_maps_flutter
是一个Flutter插件,提供了一个Google Maps小部件。
平台 | Android | iOS | Web |
---|---|---|---|
支持版本 | SDK 20+ | iOS 14+ | 同 Flutter官方支持平台 |
开始使用
获取API Key
在 Google Cloud Platform 获取API Key,并为每个平台启用Google Map SDK:
- 访问 Google Developers Console
- 选择或创建项目
- 导航菜单 -> “Google Maps”
- “APIs” 下选择需要启用的服务:
- Android: 启用 “Maps SDK for Android”
- iOS: 启用 “Maps SDK for iOS”
- Web: 启用 “Maps JavaScript API”
确保所有已启用的API都在 “Enabled APIs” 列表中。更多详情请参阅 Google Maps Platform 入门
配置各平台
Android
-
在
android/app/build.gradle
中设置minSdkVersion
:android { defaultConfig { minSdkVersion 20 } }
-
在应用清单文件
android/app/src/main/AndroidManifest.xml
中指定你的API Key:<manifest ... <application ... <meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR KEY HERE"/>
iOS
在应用代理文件中指定API Key (ios/Runner/AppDelegate.m
或 ios/Runner/AppDelegate.swift
):
-
Objective-C代码:
#include "AppDelegate.h" #include "GeneratedPluginRegistrant.h" #import "GoogleMaps/GoogleMaps.h" @implementation AppDelegate - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { [GMSServices provideAPIKey:@"YOUR KEY HERE"]; [GeneratedPluginRegistrant registerWithRegistry:self]; return [super application:application didFinishLaunchingWithOptions:launchOptions]; } @end
-
Swift代码:
import UIKit import Flutter import GoogleMaps @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { GMSServices.provideAPIKey("YOUR KEY HERE") GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } }
Web
修改 web/index.html
文件以包含Google Maps JS SDK。详情见 google_maps_flutter_web README
使用示例
下面是一个简单的地图显示示例:
class MapSample extends StatefulWidget {
const MapSample({super.key});
@override
State<MapSample> createState() => MapSampleState();
}
class MapSampleState extends State<MapSample> {
final Completer<GoogleMapController> _controller = Completer();
static const CameraPosition _kGooglePlex = CameraPosition(
target: LatLng(37.42796133580664, -122.085749655962),
zoom: 14.4746,
);
static const CameraPosition _kLake = CameraPosition(
bearing: 192.8334901395799,
target: LatLng(37.43296265331129, -122.08832357078792),
tilt: 59.440717697143555,
zoom: 19.151926040649414);
@override
Widget build(BuildContext context) {
return Scaffold(
body: GoogleMap(
mapType: MapType.hybrid,
initialCameraPosition: _kGooglePlex,
onMapCreated: (GoogleMapController controller) {
_controller.complete(controller);
},
),
floatingActionButton: FloatingActionButton.extended(
onPressed: _goToTheLake,
label: const Text('To the lake!'),
icon: const Icon(Icons.directions_boat),
),
);
}
Future<void> _goToTheLake() async {
final GoogleMapController controller = await _controller.future;
await controller.animateCamera(CameraUpdate.newCameraPosition(_kLake));
}
}
这个例子展示了如何创建一个基本的地图视图,并添加了一个浮动按钮用于切换到另一个位置(湖泊)。通过 _controller
可以控制地图的各种属性和行为。
更多关于Flutter地图展示插件google_maps_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter地图展示插件google_maps_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,以下是一个关于如何在Flutter应用中使用google_maps_flutter
插件来展示地图的代码案例。这个示例将展示如何集成Google Maps插件、配置API密钥,并在Flutter应用中显示一个基本的地图。
步骤 1: 添加依赖
首先,在你的pubspec.yaml
文件中添加google_maps_flutter
依赖:
dependencies:
flutter:
sdk: flutter
google_maps_flutter: ^2.0.10 # 请检查最新版本号
然后运行flutter pub get
来安装依赖。
步骤 2: 配置Google Maps API密钥
-
获取API密钥:访问Google Cloud Platform Console,创建一个项目并启用Google Maps Platform API。然后,创建一个API密钥。
-
限制API密钥:为了安全起见,你应该限制API密钥的使用。你可以在Google Cloud Console中设置API密钥的限制条件,例如仅允许来自特定应用的请求。
-
将API密钥添加到Android和iOS项目中:
-
对于Android:将API密钥添加到
android/app/src/main/AndroidManifest.xml
中:<meta-data android:name="com.google.android.geo.API_KEY" android:value="YOUR_API_KEY_HERE"/>
-
对于iOS:将API密钥添加到
ios/Runner/Info.plist
中,作为GMSServices
的APIKey
:<key>GMSServices</key> <dict> <key>APIKey</key> <string>YOUR_API_KEY_HERE</string> </dict>
-
步骤 3: 编写Flutter代码
在你的Flutter项目中,创建一个新的Dart文件(例如map_screen.dart
)并编写以下代码来显示地图:
import 'package:flutter/material.dart';
import 'package:google_maps_flutter/google_maps_flutter.dart';
class MapScreen extends StatefulWidget {
@override
_MapScreenState createState() => _MapScreenState();
}
class _MapScreenState extends State<MapScreen> {
late GoogleMapController _controller;
late LatLng _center;
final Set<Marker> _markers = HashSet<Marker>();
@override
void initState() {
super.initState();
_center = LatLng(-34, 151); // 默认中心点:悉尼
_markers.add(Marker(
markerId: MarkerId('marker_id_home'),
position: _center,
infoWindow: InfoWindow(
title: 'Sydney',
snippet: 'Australia',
),
));
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('Google Maps Flutter Demo'),
),
body: GoogleMap(
mapType: MapType.normal,
initialCameraPosition: CameraPosition(
target: _center,
zoom: 11.0,
),
markers: _markers,
onMapCreated: (GoogleMapController controller) {
_controller = controller;
},
),
);
}
}
步骤 4: 在主应用中展示地图
在你的main.dart
文件中,导入并展示MapScreen
:
import 'package:flutter/material.dart';
import 'map_screen.dart';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter Google Maps Demo',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MapScreen(),
);
}
}
运行应用
确保你已经正确配置了API密钥,并且设备或模拟器能够访问互联网。然后,通过运行flutter run
来启动你的Flutter应用。你应该能看到一个显示悉尼的Google Maps界面。
这个示例展示了如何使用google_maps_flutter
插件在Flutter应用中显示一个基本的地图,并添加了一个标记。你可以根据需要进一步扩展和定制地图功能。