Flutter projesi oluşturmadan önce Başlamadan önce bölümündeki ön koşul adımlarını tamamladığınızdan emin olun. Faturalandırmayı etkinleştirdikten ve API anahtarı oluşturduktan sonra uygulamanızı geliştirmek için kullandığınız Flutter projesini ayarlayabilirsiniz.
1. adım: Gerekli yazılımı yükleyin
Flutter için Google Haritalar paketini kullanarak proje oluşturmak istiyorsanız Flutter SDK'sını yüklemeniz ve geliştirme ortamınızı hedef platformunuz için ayarlamanız gerekir. Ayrıntılar için Flutter yükleme kılavuzuna göz atın.
2. adım: Flutter için Google Haritalar paketini yeni bir projeye yükleyin
Flutter, Flutter için Google Haritalar paketini Flutter eklentisi olarak sunar.
Flutter projesini oluşturun ve Haritalar eklentisini ekleyin.
-
"flutter create" komutunu kullanarak yeni bir Flutter projesi oluşturun:
Başvuru kodunuzflutter create google_maps_in_flutter --platforms=android,ios,web
Creating project google_maps_in_flutter... [Listing of created files elided] Wrote 127 files. All done!google_maps_in_flutter/lib/main.dart
'dadır. Uygulamanızı çalıştırmak için şunu yazın: Bu uygulama iOS, Android ve web'i hedefler. Google Haritalar SDK'sı şu anda tarayıcı dışındaki masaüstü uygulamalarını desteklememektedir.cd google_maps_in_flutter
flutter run
-
Flutter için Google Haritalar paket eklentisini bu projeye ekleyin.
flutter pub add google_maps_flutter
Resolving dependencies... [Listing of dependencies elided] Changed 14 dependencies!
3. Adım: Platform sürümünü ayarlayın
Yapay Zeka
Android için minimum SDK sürümünü ayarlayın.
android/app/build.gradle
yapılandırma dosyasını tercih ettiğiniz IDE'de açın.android.defaultConfig.minSdkVersion
değerini21
olarak değiştirin:android { //... defaultConfig { applicationId "com.example.google_maps_in_flutter" minSdkVersion 21 // Set to 21 targetSdkVersion flutter.targetSdkVersion versionCode flutterVersionCode.toInteger() versionName flutterVersionName } //... }
defaultConfig
öğesini yapılandırırken kendi benzersiz ApplicationID değerinizi belirtin.- Dosyayı kaydedin ve proje değişikliklerinizi Gradle ile senkronize edin.
iOS
Minimum iOS platform sürümünü ayarlayın.
ios/Podfile
yapılandırma dosyasını tercih ettiğiniz IDE'de açın.- Aşağıdaki satırları bu Podfile dosyasının başına ekleyin:
# Set platform to 14.0 to enable latest Google Maps SDK platform :ios, '14.0'
4. adım: API anahtarınızı projeye ekleyin
Başlamadan önce bölümünde, uygulamanız için bir API anahtarı oluşturdunuz. Şimdi bu anahtarı Flutter projenize ekleyin. Flutter için bu API anahtarını tüm hedef platformlara (iOS, Android ve Web) eklemeniz gerekir.
Aşağıdaki örneklerde YOUR_API_KEY
yerine API anahtarınızı girin.
Yapay Zeka
Bu görevi kolaylaştırmak için Android için Secrets Gradle Plugin'i kullanmanızı öneririz.
Android için Secrets Gradle eklentisini Google Haritalar projenize yüklemek üzere:
-
Android Studio'da üst düzey
build.gradle.kts
veyabuild.gradle
dosyanızı açın vebuildscript
altındakidependencies
öğesine aşağıdaki kodu ekleyin.Kotlin
buildscript { dependencies { classpath("com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1") } }
Modern
buildscript { dependencies { classpath "com.google.android.libraries.mapsplatform.secrets-gradle-plugin:secrets-gradle-plugin:2.0.1" } }
-
Modül düzeyindeki
build.gradle.kts
veyabuild.gradle
dosyanızı açıpplugins
öğesine aşağıdaki kodu ekleyin.Kotlin
plugins { // ... id("com.google.android.libraries.mapsplatform.secrets-gradle-plugin") }
Modern
plugins { // ... id 'com.google.android.libraries.mapsplatform.secrets-gradle-plugin' }
- Modül düzeyindeki
build.gradle.kts
veyabuild.gradle
dosyanızdatargetSdk
vecompileSdk
değerlerinin 34 olarak ayarlandığından emin olun. - Dosyayı kaydedin ve projenizi Gradle ile senkronize edin.
-
Üst düzey dizininizdeki
secrets.properties
dosyasını açıp aşağıdaki kodu ekleyin.YOUR_API_KEY
yerine API anahtarınızı girin.secrets.properties
, sürüm kontrol sistemine kontrol edilmekten hariç tutulduğu için anahtarınızı bu dosyada saklayın.MAPS_API_KEY=YOUR_API_KEY
- Dosyayı kaydedin.
-
local.defaults.properties
dosyasını üst düzey dizininizde,secrets.properties
dosyasıyla aynı klasörde oluşturun ve ardından aşağıdaki kodu ekleyin.MAPS_API_KEY=DEFAULT_API_KEY
Bu dosyanın amacı,
secrets.properties
dosyası bulunamazsa API anahtarı için yedek bir konum sağlamak ve böylece derlemelerin başarısız olmasını önlemektir. Bu durum, uygulamayısecrets.properties
dosyasını atlayan bir sürüm kontrol sisteminden klonladıysanız ve API anahtarınızı sağlamak için henüz yerel olarak birsecrets.properties
dosyası oluşturmadıysanız ortaya çıkabilir. - Dosyayı kaydedin.
-
AndroidManifest.xml
dosyanızdacom.google.android.geo.API_KEY
bölümüne gidin veandroid:value attribute
değerini güncelleyin.<meta-data>
etiketi yoksa<application>
etiketinin alt öğesi olarak oluşturun.<meta-data android:name="com.google.android.geo.API_KEY" android:value="${MAPS_API_KEY}" />
Not:
com.google.android.geo.API_KEY
, API anahtarı için önerilen meta veri adıdır. Bu ada sahip bir anahtar, Flutter SDK'sı da dahil olmak üzere Android platformundaki birden fazla Google Haritalar tabanlı API'de kimlik doğrulaması yapmak için kullanılabilir. API, geriye dönük uyumluluk içincom.google.android.maps.v2.API_KEY
adını da destekler. Bu eski ad yalnızca Android Maps API v2 ile kimlik doğrulamasına olanak tanır. Bir uygulama, API anahtarı meta veri adlarından yalnızca birini belirtebilir. Her ikisi de belirtilirse API bir istisna oluşturur. -
Android Studio'da modül düzeyindeki
build.gradle.kts
veyabuild.gradle
dosyanızı açıpsecrets
mülkünü düzenleyin.secrets
mülkü yoksa ekleyin.propertiesFileName
değerinisecrets.properties
,defaultPropertiesFileName
değerinilocal.defaults.properties
ve diğer özellikleri ayarlamak için eklentinin özelliklerini düzenleyin.Kotlin
secrets { // To add your Maps API key to this project: // 1. If the secrets.properties file does not exist, create it in the same folder as the local.properties file. // 2. Add this line, where YOUR_API_KEY is your API key: // MAPS_API_KEY=YOUR_API_KEY 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.*" }
Modern
secrets { // To add your Maps API key to this project: // 1. If the secrets.properties file does not exist, create it in the same folder as the local.properties file. // 2. Add this line, where YOUR_API_KEY is your API key: // MAPS_API_KEY=YOUR_API_KEY 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.*" }
Not: Yukarıda gösterildiği gibi, API anahtarı için önerilen meta veri adı com.google.android.geo.API_KEY
'dir. Bu ada sahip bir anahtar, Flutter SDK'sı da dahil olmak üzere Android platformundaki birden fazla Google Haritalar tabanlı API'de kimlik doğrulaması yapmak için kullanılabilir. API, geriye dönük uyumluluk için com.google.android.maps.v2.API_KEY
adını da destekler. Bu eski ad yalnızca Android Maps API v2'de kimlik doğrulamasına olanak tanır. Bir uygulama, API anahtarı meta veri adlarından yalnızca birini belirtebilir. Her ikisi de belirtilirse API bir istisna oluşturur.
iOS
API anahtarınızı AppDelegate.swift
dosyanıza ekleyin.
- Flutter projenizdeki
ios/Runner/AppDelegate.swift
dosyasını tercih ettiğiniz IDE ile açın. - Flutter için Google Haritalar paketini uygulamanıza eklemek üzere aşağıdaki içe aktarma ifadesini ekleyin:
- API'nizi
application(_:didFinishLaunchingWithOptions:)
yönteminize ekleyin. API anahtarınızı YOUR_API_KEY ile değiştirin:GMSServices.provideAPIKey("YOUR_API_KEY")
AppDelegate.swift
dosyasını kaydedip kapatın.
import GoogleMaps
Tamamlanmış AppDelegate.swift
dosyası aşağıdaki gibi görünmelidir:
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) } }
Web
API anahtarınızı index.html
uygulama dosyanıza ekleyin.
- Flutter projenizdeki
web/index.html
dosyasını tercih ettiğiniz IDE ile açın. <head>
etiketinin içine aşağıdaki komut dosyası etiketini ekleyin.YOUR_API_KEY
yerine API anahtarınızı girin.<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
dosyasını kaydedip kapatın.index.html
öğesininhead
bölümünün tamamı aşağıdaki gibi olmalıdır:<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. adım: Harita ekleyin
Aşağıdaki kodda, yeni bir Flutter uygulamasına basit bir haritanın nasıl ekleneceği gösterilmektedir.
- Flutter projenizdeki
lib/main.dart
dosyasını tercih ettiğiniz IDE ile açın. mapController
örneği oluşturmak ve başlatmak için uygulamanızın varsayılan ana yöntemine yöntem ekleyin veya mevcut yöntemleri güncelleyin.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, ), ), ), ); } }
- Uygulamanızı çalıştırmak istediğiniz emülatörleri veya cihazları başlatın.
- Uygulamanızı çalıştırın. Aşağıdakine benzer bir çıkış görürsünüz:
flutter run
Multiple 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"):Çalıştırmak istediğiniz platformun numarasını yazın.
flutter run
işlevini her çağırdığınızda Flutter size bu seçenekleri sunar. Geliştirme sisteminizde çalışan bir emülatör veya bağlı bir test cihazı yoksa Flutter, Chrome'u açmayı seçer.Her platformda, Avustralya'nın Sidney kentinin ortasına yerleştirilmiş bir harita gösterilir. Haritayı görmüyorsanız API anahtarınızı uygun hedef projeye eklediğinizden emin olun.
Sonraki adımlar
API anahtarınız ve Flutter projeniz olduğu için artık uygulama oluşturup çalıştırabilirsiniz. Flutter için Google Haritalar paketi, başlamanıza yardımcı olabilecek birçok eğitim ve örnek uygulama sağlar. Daha fazla bilgi edinmek için aşağıdaki kaynakları inceleyin:
- İşaretçi içeren bir harita ekleme eğitimi
- Google Haritalar Platformu ile Flutter için Codelabs
- GitHub'daki kod örnekleri