簡介
本教學課程說明如何在 Flutter 應用程式中加入 Google 地圖。地圖中包含一個標記 (也稱為圖釘),用以表示特定位置。
取得程式碼
複製或下載 Flutter 範例存放區。您可以在 google_maps
目錄中找到程式碼範例。
設定開發專案
請先確認您已完成「設定 Flutter 專案」指南中所列的步驟,再繼續這個課程。
1. 匯入 Google Maps for Flutter 套件
- 在想用的 IDE 中開啟
main.dart
檔案。 - 確認已將下列匯入陳述式加進檔案:
import 'package:google_maps_flutter/google_maps_flutter.dart';
2. 在 Flutter 應用程式中加入 Google 地圖
在 Scaffold
小工具內,將 GoogleMap
小工具新增為主體。
GoogleMap( initialCameraPosition: CameraPosition( target: _center, zoom: 11.0, ), markers: { const Marker( markerId: MarkerId('Sydney'), position: LatLng(-33.86, 151.20), ) }, )
markerId
選項會為您的標記加上標籤。position
選項會設定標記在地圖上的位置。
3. 建構並執行應用程式
使用下列其中一個選項啟動 Flutter 應用程式:
- 在您的 IDE 中點選
Run
按鈕 - 在指令列中執行
flutter run
。
您應該會看到以澳洲東海岸的雪梨為中心的地圖,上面有一個標記,與本頁中的圖片類似。
疑難排解
- 如未看到地圖,請檢查是否已取得 API 金鑰,並加入應用程式。
- 如果您使用 iOS 軟體包 ID 限制 API 金鑰,請編輯金鑰,加入應用程式的軟體包 ID:
com.google.examples.map-with-marker
。 - 確認您的 Wi-Fi 或 GPS 連線品質良好。
- 使用 Flutter 開發人員工具查看記錄檔並為應用程式偵錯。
- 如要進一步瞭解如何執行 Flutter 應用程式,請參閱本文。
4. 瞭解程式碼
您可以在 GitHub 找到這個程式碼。
- 匯入必要的套件,並將應用程式初始化。
import 'package:flutter/material.dart'; import 'package:google_maps_flutter/google_maps_flutter.dart'; void main() => runApp(const MyApp()); class MyApp extends StatefulWidget { const MyApp({super.key}); @override State<MyApp> createState() => _MyAppState(); }
- 製作以澳洲雪梨為中心的地圖。
class _MyAppState extends State<MyApp> { late GoogleMapController mapController; final LatLng _center = const LatLng(-33.86, 151.20); void _onMapCreated(GoogleMapController controller) { mapController = controller; }
- 新增在應用程式中顯示地圖所需的小工具。
@override Widget build(BuildContext context) { return MaterialApp( home: Scaffold( appBar: AppBar( title: const Text('Maps Sample App'), backgroundColor: Colors.green[700], ), body: GoogleMap( onMapCreated: _onMapCreated, initialCameraPosition: CameraPosition( target: _center, zoom: 11.0, ), // CameraPosition ), // GoogleMap ), // Scaffold ); // MaterialApp } }
- 新增 markers 小工具,再將小工具加進應用程式。
body: GoogleMap( onMapCreated: _onMapCreated, initialCameraPosition: CameraPosition( target: _center, zoom: 11.0, ), markers: { const Marker( markerId: const MarkerId("Sydney"), position: LatLng(-33.86, 151.20), ), // Marker }, // markers ), // GoogleMap ...
- 為標記新增資訊視窗。
const Marker( markerId: const MarkerId("Sydney"), position: LatLng(-33.86, 151.20), infoWindow: InfoWindow( title: "Sydney", snippet: "Capital of New South Wales", ), // InfoWindow ), //Marker ...
根據預設,Google Maps for Flutter 套件會在使用者輕觸標記時顯示資訊視窗的內容。如果您可以接受使用預設行為,就不需要為標記新增點擊事件監聽器。
恭喜!您已經建構了一個能顯示 Google 地圖,且有標記指出特定位置的 Flutter 應用程式,這個應用程式會在資訊視窗中提供額外資訊。此外,您也學會如何使用 Google Maps for Flutter 套件。