Перед настройкой проекта Flutter обязательно выполните предварительные шаги, описанные в руководстве по подготовке. После того как вы включите оплату и создадите ключ API, вы сможете настроить проект Flutter, который будете использовать для разработки приложения.
Шаг 1. Установите необходимое ПО
Чтобы собрать проект с помощью пакета Google Maps для Flutter, вам нужно установить Flutter SDK и настроить среду разработки для своей целевой платформы. Подробнее об этом рассказывается в руководстве по установке Flutter.
Шаг 2. Установите пакет Google Maps для Flutter в новый проект
Вам потребуется добавить плагин Google Maps для Flutter.
Создайте проект Flutter и добавьте плагин Maps.
-
Создайте новый проект Flutter с помощью команды
: Код вашего приложения находится в папкеflutter create google_maps_in_flutter --platforms=android,ios,webCreating project google_maps_in_flutter... [Listing of created files elided] Wrote 127 files. All done!google_maps_in_flutter/lib/main.dart. Чтобы запустить приложение, введите:
Целевые платформы приложения – iOS, Android и Веб. В настоящее время Google Maps SDK не поддерживает приложения для ПК, кроме браузерной версии.cd google_maps_in_flutterflutter run - Добавьте в проект плагин Google Maps для Flutter.
flutter pub add google_maps_flutterResolving dependencies... [Listing of dependencies elided] Changed 14 dependencies!
Шаг 3. Укажите версию платформы
Android
Укажите минимальную версию SDK для Android.
- Откройте файл конфигурации
android/app/build.gradleв своей интегрированной среде разработки. - Измените значение
android.defaultConfig.minSdkVersionна21:android { //... defaultConfig { applicationId "com.example.google_maps_in_flutter" minSdkVersion 21 // Set to 21 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName } //... } - При настройке параметра
defaultConfigукажите свой уникальный идентификатор приложения (ApplicationID). - Сохраните файл и синхронизируйте проект с Gradle.
iOS
Укажите минимальную версию платформы iOS.
- Откройте файл конфигурации
ios/Podfileв своей интегрированной среде разработки. - Добавьте в начало файла Podfile следующие строки:
# Set platform to 14.0 to enable latest Google Maps SDK platform :ios, '14.0'
Шаг 4. Добавьте ключ API в проект
В процессе подготовки вы создали ключ API для своего приложения. Теперь добавьте этот ключ в проект Flutter. При работе с Flutter этот ключ API следует добавить для всех целевых платформ (iOS, Android и Веб).
Укажите свой ключ API вместо YOUR_API_KEY в следующих примерах.
Android
Чтобы упростить работу, используйте плагин Secrets Gradle для Android.
Чтобы установить плагин Secrets Gradle для Android в проект Google Карт:
-
В Android Studio откройте файл
build.gradleилиbuild.gradle.ktsверхнего уровня и добавьте в элементdependencies, принадлежащий элементуbuildscript, приведенный ниже код.Groovy
buildscript { dependencies { classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1" } }Kotlin
buildscript { dependencies { classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1") } } -
Откройте файл
build.gradleуровня модуля и добавьте в элементpluginsприведенный ниже код.Groovy
plugins { // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }Kotlin
plugins { id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") } - Убедитесь, что для
targetSdkиcompileSdkв файлеbuild.gradleуровня модуля задано значение 34. - Сохраните файл и синхронизируйте проект с Gradle.
-
Откройте файл
secrets.propertiesв каталоге верхнего уровня и добавьте приведенный ниже код. Укажите вместоYOUR_API_KEYсвой ключ API. Храните свой ключ в этом файле, посколькуsecrets.propertiesне добавляется в систему управления версиями.MAPS_API_KEY=YOUR_API_KEY
- Сохраните файл.
-
Создайте файл
local.defaults.propertiesв директории верхнего уровня (там же, где хранится файлsecrets.properties), а затем добавьте указанный ниже код.MAPS_API_KEY=DEFAULT_API_KEY
Этот файл служит запасным хранилищем ключа API, чтобы обеспечить выполнение сборки, даже если система не обнаружит файл
secrets.properties. Так может произойти, если вы скопируете приложение из системы управления версиями, игнорирующей файлsecrets.properties, и не создадитеsecrets.propertiesс ключом API локально. - Сохраните файл.
-
В файле
AndroidManifest.xmlнайдите разделcom.google.android.geo.API_KEYи обновитеandroid:value attribute. Если тег<meta-data>не существует, создайте его как дочерний элемент для тега<application>.<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />Note:
com.google.android.geo.API_KEYis the recommended metadata name for the API key. A key with this name can be used to authenticate to multiple Google Maps-based APIs on the Android platform, including the Flutter SDK. For backwards compatibility, the API also supports the namecom.google.android.maps.v2.API_KEY. This legacy name allows authentication to the Android Maps API v2 only. An application can specify only one of the API key metadata names. If both are specified, the API throws an exception. -
In Android Studio, open your module-level
build.gradleorbuild.gradle.ktsfile and edit thesecretsproperty. If thesecretsproperty does not exist, add it.Edit the properties of the plugin to set
propertiesFileNametosecrets.properties, setdefaultPropertiesFileNametolocal.defaults.properties, and set any other properties.Groovy
secrets { // Optionally specify a different file name containing your secrets. // The plugin defaults to "local.properties" propertiesFileName = "secrets.properties" // A properties file containing default secret values. This file can be // checked in version control. defaultPropertiesFileName = "local.defaults.properties" // Configure which keys should be ignored by the plugin by providing regular expressions. // "sdk.dir" is ignored by default. ignoreList.add("keyToIgnore") // Ignore the key "keyToIgnore" ignoreList.add("sdk.*") // Ignore all keys matching the regexp "sdk.*" }Kotlin
secrets { // Optionally specify a different file name containing your secrets. // The plugin defaults to "local.properties" propertiesFileName = "secrets.properties" // A properties file containing default secret values. This file can be // checked in version control. defaultPropertiesFileName = "local.defaults.properties" // Configure which keys should be ignored by the plugin by providing regular expressions. // "sdk.dir" is ignored by default. ignoreList.add("keyToIgnore") // Ignore the key "keyToIgnore" ignoreList.add("sdk.*") // Ignore all keys matching the regexp "sdk.*" }Примечание. Как показано выше, рекомендуемое имя метаданных для ключа API –
com.google.android.geo.API_KEY. С ним ключ можно будет использовать для аутентификации в нескольких API Google Карт для Android, включая Flutter SDK. Для обеспечения обратной совместимости API также поддерживает имяcom.google.android.maps.v2.API_KEY. Это устаревшее имя обеспечивает аутентификацию только для Android Maps API версии 2. В приложении можно указать только одно из имен в метаданных ключа API. Если указаны оба имени, API вызывает исключение.iOS
Добавьте ключ API в файл
AppDelegate.swift.- Откройте файл
ios/Runner/AppDelegate.swiftв проекте Flutter в своей интегрированной среде разработки. - Добавьте следующую команду, чтобы импортировать в приложение пакет Google Maps для Flutter:
- Добавьте API в метод
application(_:didFinishLaunchingWithOptions:), указав свой ключ API вместо YOUR_API_KEY:GMSServices.provideAPIKey("YOUR_API_KEY") - Сохраните и закройте файл
AppDelegate.swift.
import GoogleMaps
Готовый файл
AppDelegate.swiftдолжен выглядеть следующим образом:import UIKit import Flutter import GoogleMaps // Add this import @UIApplicationMain @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { GeneratedPluginRegistrant.register(with: self) // TODO: Add your Google Maps API key GMSServices.provideAPIKey("YOUR_API_KEY") return super.application(application, didFinishLaunchingWithOptions: launchOptions) } }Веб
Добавьте ключ API в файл
index.htmlприложения.- Откройте файл
web/index.htmlв проекте Flutter в своей интегрированной среде разработки. - Добавьте следующий тег скрипта внутри тега
<head>, указав свой ключ API вместоYOUR_API_KEY.<script> (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({ key: "YOUR_API_KEY", v: "weekly", // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.). // Add other bootstrap parameters as needed, using camel case. }); </script> - Сохраните и закройте файл
index.html.Полностью раздел
headвindex.htmlдолжен выглядеть так:<head> <base href="/"> <meta charset="UTF-8"> <meta content="IE=Edge" http-equiv="X-UA-Compatible"> <meta name="description" content="A new Flutter project."> <!-- iOS meta tags & icons --> <meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-status-bar-style" content="black"> <meta name="apple-mobile-web-app-title" content="google_maps_in_flutter"> <link rel="apple-touch-icon" href="icons/Icon-192.png"> <script> (g=>{var h,a,k,p="The Google Maps JavaScript API",c="google",l="importLibrary",q="__ib__",m=document,b=window;b=b[c]||(b[c]={});var d=b.maps||(b.maps={}),r=new Set,e=new URLSearchParams,u=()=>h||(h=new Promise(async(f,n)=>{await (a=m.createElement("script"));e.set("libraries",[...r]+"");for(k in g)e.set(k.replace(/[A-Z]/g,t=>"_"+t[0].toLowerCase()),g[k]);e.set("callback",c+".maps."+q);a.src=`https://maps.${c}apis.com/maps/api/js?`+e;d[q]=f;a.onerror=()=>h=n(Error(p+" could not load."));a.nonce=m.querySelector("script[nonce]")?.nonce||"";m.head.append(a)}));d[l]?console.warn(p+" only loads once. Ignoring:",g):d[l]=(f,...n)=>r.add(f)&&u().then(()=>d[l](f,...n))})({ key: "YOUR_API_KEY", v: "weekly", // Use the 'v' parameter to indicate the version to use (weekly, beta, alpha, etc.). // Add other bootstrap parameters as needed, using camel case. }); </script> <title>google_maps_in_flutter</title> <link rel="manifest" href="manifest.json"> </head>
Шаг 5. Добавьте карту
Ниже приведены примеры кода, который позволяет добавить простую карту в новое приложение Flutter.
- Откройте файл
lib/main.dartв проекте Flutter в своей интегрированной среде разработки. - В методе main вашего приложения добавьте или измените методы, которые будут создавать и инициализировать экземпляр
mapController.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, ), ), ), ); } } - Запустите все эмуляторы и/или устройства, на которых будет выполняться приложение.
- Запустите приложение. Вы должны получить примерно такой результат:
flutter runMultiple devices found: Android phone (mobile) • emulator-5554 • android-arm64 • Android 13 (API 33) (emulator) iPhone (mobile) • ios • com.apple.CoreSimulator.SimRuntime.iOS-16-2 (simulator) Chrome (web) • chrome • web-javascript • Google Chrome 108.0.5359.124 [1]: Android phone [2]: iPhone [3]: Chrome Please choose one (To quit, press "q/Q"):Введите номер платформы, на которой будет выполняться приложение. Этот выбор будет предлагаться при каждом вызове
flutter run. Если на вашей системе не запущен эмулятор и не подключено тестовое устройство, Flutter автоматически запустит Chrome.На всех платформах должна отобразиться карта, центрированная по городу Сидней (Австралия). Если вы не видите карту, проверьте, добавлен ли ключ API в нужный целевой проект.
Дальнейшие действия
Теперь, когда у вас есть ключ API и проект Flutter, вы можете создавать и запускать приложения. Вместе с пакетом Google Maps для Flutter доступно множество руководств и примеров приложений, которые помогут вам начать работу. Подробную информацию можно найти в следующих источниках:
- Руководство по добавлению карты с маркером.
- Практические работы по использованию Flutter и платформы Google Карт.
- Примеры кода на GitHub.
- Откройте файл
Если не указано иное, контент на этой странице предоставляется по лицензии Creative Commons "С указанием авторства 4.0", а примеры кода – по лицензии Apache 2.0. Подробнее об этом написано в правилах сайта. Java – это зарегистрированный товарный знак корпорации Oracle и ее аффилированных лиц.
Последнее обновление: 2024-05-20 UTC.