# Google Maps API Key Setup ## ⚠️ IMPORTANTE Per usare le mappe nell'app, devi configurare la Google Maps API Key. ## πŸ“‹ Come Ottenere la API Key ### 1. Vai alla Google Cloud Console Apri: https://console.cloud.google.com/ ### 2. Crea o Seleziona un Progetto - Se hai giΓ  un progetto, selezionalo - Altrimenti crea un nuovo progetto: - Click su "Select a project" in alto - Click su "NEW PROJECT" - Nome: "Terrain Monitor" (o come preferisci) - Click "CREATE" ### 3. Abilita le API necessarie Nel tuo progetto: 1. Vai su **APIs & Services** β†’ **Library** 2. Cerca e abilita queste API: - **Maps SDK for Android** - **Maps SDK for iOS** (se userai iOS) - **Geocoding API** (opzionale, per reverse geocoding) ### 4. Crea la API Key 1. Vai su **APIs & Services** β†’ **Credentials** 2. Click su **+ CREATE CREDENTIALS** β†’ **API key** 3. VerrΓ  creata una chiave (es. `AIzaSyA...`) 4. **COPIA questa chiave** ### 5. (Consigliato) Restrizioni di Sicurezza Per proteggere la tua API key: 1. Click sulla chiave appena creata 2. In **Application restrictions**: - Seleziona "Android apps" - Click "+ Add an item" - Package name: `eu.aseltd.terrain_monitor_app` - SHA-1 certificate fingerprint: ```bash # Debug (per sviluppo) keytool -list -v -keystore ~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass android # Copia il valore SHA1 e incollalo ``` 3. In **API restrictions**: - Seleziona "Restrict key" - Seleziona solo: "Maps SDK for Android" 4. Click **SAVE** ## πŸ”§ Configura l'App ### Android Modifica il file: ``` android/app/src/main/AndroidManifest.xml ``` Trova questa riga: ```xml ``` Sostituisci `YOUR_GOOGLE_MAPS_API_KEY_HERE` con la tua chiave: ```xml ``` ### iOS (se necessario) Modifica il file: ``` ios/Runner/AppDelegate.swift ``` Aggiungi: ```swift import GoogleMaps @main @objc class AppDelegate: FlutterAppDelegate { override func application( _ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]? ) -> Bool { GMSServices.provideAPIKey("YOUR_GOOGLE_MAPS_API_KEY_HERE") GeneratedPluginRegistrant.register(with: self) return super.application(application, didFinishLaunchingWithOptions: launchOptions) } } ``` ## πŸ’° Costi Google Maps offre un **credito gratuito mensile** di $200: - Fino a **28.500 caricamenti mappe** al mese GRATIS - Per un'app con pochi utenti, rimarrai sotto il limite gratuito Monitora l'uso su: https://console.cloud.google.com/google/maps-apis/metrics ## βœ… Verifica Dopo aver configurato: 1. Ricompila l'app: ```bash flutter clean flutter build apk --debug flutter install ``` 2. Apri l'app e naviga a: - **Allarmi** β†’ Tap su un allarme β†’ Dovrebbe vedere la mappa - **Siti** β†’ Tap su un sito β†’ Tab "Informazioni" β†’ Dovrebbe vedere la mappa 3. Se vedi la mappa con il marker, tutto funziona! βœ… ## πŸ”’ Sicurezza **IMPORTANTE:** - βœ… NON committare la API key nel repository pubblico - βœ… Usa le restrizioni (Android app + API restrictions) - βœ… Monitora l'uso nel dashboard Google Cloud - βœ… Per produzione, considera di usare variabili d'ambiente ## πŸ› οΈ Troubleshooting ### Problema: Mappa grigia - Verifica che la API key sia corretta - Verifica che "Maps SDK for Android" sia abilitato - Verifica le restrizioni (potrebbero essere troppo strette) ### Problema: "API key not found" - Verifica che la `` sia dentro `` nel Manifest - Ricompila l'app con `flutter clean` ### Problema: "This API project is not authorized" - Verifica le restrizioni della key - Prova a rimuovere temporaneamente le restrizioni per testare - Verifica che il package name sia corretto ## πŸ“š Risorse - [Google Maps Platform](https://developers.google.com/maps) - [Maps SDK for Android](https://developers.google.com/maps/documentation/android-sdk) - [google_maps_flutter package](https://pub.dev/packages/google_maps_flutter) --- **Fatto?** Dopo aver configurato la chiave, l'app funzionerΓ  perfettamente con le mappe! πŸ—ΊοΈ