Google Maps SDK è un insieme di strumenti di Google per integrare mappe interattive, geocodifica, percorsi e ricerca di luoghi in applicazioni mobili e web. L'SDK include Maps SDK per Android e iOS, Places API per lavorare con geodati e Directions API per la creazione di percorsi. I servizi Google Maps elaborano oltre 100 miliardi di richieste al giorno, rendendo Maps SDK una delle soluzioni di mappatura più performanti. Secondo Google Maps Platform Documentation, 2025, l'SDK è utilizzato nel 60% di tutte le applicazioni mobili con mappe.
Punti chiave
Google Maps SDK è una piattaforma completa per sviluppatori che fornisce strumenti per lavorare con dati geografici nelle applicazioni. La piattaforma include diverse API: Maps SDK (visualizzazione mappe), Routes API (percorsi), Places API (ricerca luoghi e geodati) e Geocoding API (conversione indirizzi in coordinate). Ogni SDK si integra separatamente e ha il proprio modello di fatturazione.
A differenza di Apple MapKit, Google Maps SDK offre un set di dati più ampio: informazioni su 250 milioni di luoghi, traffico in tempo reale, panorami Street View e Indoor Maps per edifici. Secondo Statista (2025), Google Maps Platform detiene il 75% del mercato degli SDK di mappatura nelle applicazioni mobili. Il vantaggio principale è un'unica chiave API per tutti i servizi Google Maps e l'integrazione multipiattaforma (Android, iOS, web).
La chiave API è un elemento obbligatorio per lavorare con Google Maps SDK. La chiave viene creata in Google Cloud Console e legata a un progetto specifico. Per Android, è necessario specificare il certificato SHA-1 dell'applicazione; per iOS — il Bundle Identifier. Google raccomanda di limitare l'uso della chiave API per indirizzi IP, referrer HTTP o pacchetti dell'applicazione per prevenire accessi non autorizzati.
Maps SDK per Android è una libreria che visualizza mappe interattive di Google all'interno di un'applicazione Android tramite MapView o SupportMapFragment. L'SDK supporta: stili mappa personalizzati, marcatori con finestre informative, poligoni e polilinee, livelli di traffico e trasporto, oltre a eventi tattili e gesti (zoom, rotazione, inclinazione). Le mappe utilizzano OpenGL per il rendering, offrendo 60 FPS sui dispositivi moderni.
L'integrazione inizia aggiungendo la dipendenza in build.gradle e configurando la chiave API tramite AndroidManifest.xml. Google Maps SDK per Android richiede Google Play Services sul dispositivo. Se Google Play Services non è disponibile (ad esempio, su dispositivi Huawei senza servizi Google), le mappe non verranno visualizzate. Per questi casi, Google raccomanda di utilizzare soluzioni alternative o WebView con JavaScript Maps API.
// AndroidManifest.xml — metadati della chiave API
//
// android:value="YOUR_API_KEY"/>
// Frammento mappa in Activity
class MapActivity : AppCompatActivity(),
OnMapReadyCallback {
private lateinit var map: GoogleMap
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_map)
val mapFragment = supportFragmentManager
.findFragmentById(R.id.map) as SupportMapFragment
mapFragment.getMapAsync(this)
}
override fun onMapReady(googleMap: GoogleMap) {
map = googleMap
val sydney = LatLng(-33.8688, 151.2093)
map.addMarker(MarkerOptions().position(sydney)
.title("Sydney"))
map.moveCamera(CameraUpdateFactory
.newLatLngZoom(sydney, 12f))
}
} Google Maps SDK su Android supporta Indoor Maps — visualizzazione delle piante degli edifici (aeroporti, centri commerciali). Basta impostare map.isIndoorEnabled = true per attivarlo. Il livello del traffico mostra la congestione stradale in tempo reale — i dati vengono aggiornati ogni 2-5 minuti. Il livello di trasporto mostra i percorsi di trasporto pubblico nelle città supportate.
Maps SDK per iOS offre le stesse funzionalità della versione Android ma adattate alla piattaforma Apple. L'integrazione avviene tramite Swift Package Manager o CocoaPods. Maps SDK per iOS utilizza i server Google per il rendering delle mappe ma può funzionare insieme ad Apple MapKit per la navigazione nativa. L'SDK supporta iOS 15 e superiori, oltre a SwiftUI tramite UIViewRepresentable.
Una caratteristica specifica della versione iOS è la configurazione obbligatoria di Info.plist con la chiave API e l'aggiunta dello schema URL per Google Maps. A differenza di Android, l'SDK iOS non richiede Google Play Services ma richiede l'app Google Maps installata per alcune funzioni (ad esempio, aprire le mappe nella navigazione). Per progetti multipiattaforma, Google raccomanda un'unica chiave API per progetto, attivata per entrambe le piattaforme.
import GoogleMaps
class MapViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
let camera = GMSCameraPosition.camera(
withLatitude: 55.7558,
longitude: 37.6173,
zoom: 10
)
let mapView = GMSMapView.map(
withFrame: view.frame,
camera: camera
)
self.view = mapView
let marker = GMSMarker()
marker.position = CLLocationCoordinate2D(
latitude: 55.7558,
longitude: 37.6173
)
marker.title = "Moscow"
marker.map = mapView
}
}Su iOS, Google Maps SDK supporta stili personalizzati tramite un file JSON in formato Google Maps Styling. Gli stili consentono di modificare i colori di strade, acqua, parchi ed edifici in base al design dell'app. Sono inoltre supportati Heatmap Layer per la visualizzazione della densità dei dati, KML e GeoJSON per importare dati geografici da fonti esterne.
Places API è un servizio di Google Maps Platform per ottenere informazioni su luoghi geografici: indirizzi, coordinate, valutazioni, orari di apertura, foto e recensioni. Places API opera in due modalità: Place Search (ricerca per testo o raggio) e Place Details (informazioni dettagliate su un luogo specifico tramite Place ID). L'SDK è disponibile per Android, iOS e come API REST.
Places SDK per Android e iOS consente di incorporare il completamento automatico degli indirizzi (Place Autocomplete) direttamente nei campi di testo dell'app. Questa è una funzionalità chiave per le app di consegna, taxi e logistica — l'utente inizia a digitare un indirizzo e l'SDK suggerisce opzioni dal database di Google Maps. Place Autocomplete riduce gli errori di inserimento dell'indirizzo dell'80% rispetto all'inserimento manuale. Fatturazione Places API: $2.83 per 1000 richieste Place Details, Place Search — $4.71 per 1000.
// Cerca luogo per testo su Android
val placesClient = Places.createClient(context)
val request = FindCurrentPlaceRequest.builder(
listOf(Place.Field.NAME, Place.Field.ADDRESS)
).build()
placesClient.findCurrentPlace(request)
.addOnSuccessListener { response ->
for (placeLikelihood in response.placeLikelihoods) {
Log.d("Places", "${placeLikelihood.place.name} - ${placeLikelihood.likelihood}")
}
}Geocoding API — geocodifica inversa (coordinate in indirizzo) e diretta (indirizzo in coordinate). Utilizzato per convertire un indirizzo inserito dall'utente in coordinate per la visualizzazione sulla mappa. Geocoding API viene fatturato separatamente: $4.71 per 1000 richieste. Google fornisce 200 richieste gratuite al giorno per account per i test.
Directions API è un servizio per calcolare percorsi tra due o più punti considerando il mezzo di trasporto (auto, a piedi, bicicletta, trasporto pubblico). L'API restituisce diversi percorsi alternativi con distanza, tempo di percorrenza, istruzioni passo-passo e una polilinea per disegnare il percorso sulla mappa. Directions API è disponibile come API REST e tramite SDK client.
Funzionalità estesa — Routes API (nuova API raccomandata da Google dal 2024). Routes API offre un instradamento migliorato con traffico in tempo reale, routing ecologico e analisi predittiva dell'orario di arrivo. Secondo Google, Routes API calcola il tempo di percorrenza con una precisione superiore del 20% in ambienti urbani rispetto alla Directions API classica. Routes API viene fatturato a $5.00 per 1000 richieste.
// Richiesta percorso tramite Routes API
val client = OkHttpClient()
val requestBody = """
{
"origin": {"location": {"latLng": {"latitude": 55.75, "longitude": 37.61}}},
"destination": {"location": {"latLng": {"latitude": 55.79, "longitude": 37.79}}},
"travelMode": "DRIVE",
"routingPreference": "TRAFFIC_AWARE"
}
""".trimIndent()
val request = Request.Builder()
.url("https://routes.googleapis.com/directions/v2:computeRoutes")
.header("X-Goog-Api-Key", apiKey)
.header("Content-Type", "application/json")
.post(requestBody.toRequestBody())
.build()
client.newCall(request).enqueue(object : Callback {
override fun onResponse(call: Call, response: Response) {
Log.d("Route", response.body?.string() ?: "")
}
})Directions API supporta fino a 25 punti di passaggio (waypoints) per un singolo percorso. I waypoints possono essere specificati come coordinate o Place ID. Per ottimizzare l'ordine dei punti (problema del commesso viaggiatore), utilizzare il parametro optimize:true. Prezzi: Directions API — $4.71 per 1000 richieste (fino a 10 punti), ogni punto aggiuntivo aggiunge il 50% al costo della richiesta.
Google Maps SDK offre ampie opzioni di personalizzazione: modifica dello schema di colori della mappa tramite stili JSON, aggiunta di marcatori personalizzati (inclusi animati), finestre informative (InfoWindow) con contenuto personalizzato e sovrapposizione di livelli grafici (GroundOverlay, Circle, Polygon). La personalizzazione consente di adattare la mappa al brand dell'app e migliorare l'esperienza utente.
Stilizzazione delle mappe viene eseguita tramite Google Maps Styling Wizard o un file JSON in formato Map Style. È possibile modificare i colori di strade (featureType: road), acqua (water), parchi (poi.park), edifici (building) e altri elementi. Per le mappe in tema scuro, utilizzare uno stile notturno con sfondo scuro e colori attenuati. Google Maps supporta fino a 100 regole di stile in un singolo file JSON.
| Elemento di personalizzazione | Metodo/Classe | Descrizione |
|---|---|---|
| Marcatori | MarkerOptions.icon(BitmapDescriptor) | Icona marcatore personalizzata da risorse o URL |
| Polilinee | PolylineOptions.color(width) | Linee per visualizzare percorsi con colore personalizzato |
| Poligoni | PolygonOptions.fillColor(strokeColor) | Riempimento area con trasparenza e contorno |
| InfoWindow | GoogleMap.setInfoWindowAdapter | Contenuto personalizzato della finestra informativa (qualsiasi View) |
| GroundOverlay | GroundOverlayOptions.image(BitmapDescriptor) | Immagine sovrapposta all'area della mappa |
Clustering — raggruppamento dei marcatori in cluster quando c'è un gran numero di punti sulla mappa. Google Maps SDK per Android e iOS include un'utilità di clustering integrata (com.google.maps.android:android-maps-utils). Il clustering impedisce il sovraccarico della mappa con marcatori a livelli di zoom bassi. Ingrandendo, il cluster si divide automaticamente in marcatori individuali. Secondo Google, il clustering migliora le prestazioni della mappa del 40% con 1000+ marcatori.
Un esempio completo di visualizzazione di una mappa con un marcatore personalizzato, polilinea del percorso e finestra informativa. L'app mostra una mappa di Mosca con un punto di interesse e un percorso dal centro della città. Il codice dimostra le principali funzionalità di Google Maps SDK: aggiunta di un marcatore, disegno di una polilinea, spostamento della fotocamera e gestione dei click.
class MapDemoActivity : AppCompatActivity(), OnMapReadyCallback {
override fun onMapReady(map: GoogleMap) {
val kremlin = LatLng(55.7513, 37.6189)
val gorkyPark = LatLng(55.7311, 37.6116)
map.addMarker(MarkerOptions()
.position(kremlin)
.title("Cremlino")
.icon(BitmapDescriptorFactory.defaultMarker(
BitmapDescriptorFactory.HUE_RED)))
map.addPolyline(PolylineOptions()
.add(kremlin, gorkyPark)
.width(5f)
.color(Color.parseColor("#2196F3")))
map.moveCamera(CameraUpdateFactory
.newLatLngZoom(kremlin, 13f))
map.setOnInfoWindowClickListener { marker ->
Toast.makeText(this,
"${marker.title} clicked",
Toast.LENGTH_SHORT).show()
}
}
}Raccomandazioni per le prestazioni: utilizzare il caricamento asincrono dei marcatori tramite ClusterManager quando ci sono più di 200 punti, limitare il numero di polilinee visibili (Google raccomanda non più di 100 contemporaneamente), utilizzare la modalità Lite per le mappe che non richiedono funzionalità complete (scorrimento senza modifiche dello zoom). La modalità Lite riduce il consumo di memoria del 50% e accelera il caricamento della mappa di 2 volte.
Google Maps Platform utilizza un modello di pagamento a consumo con un limite gratuito mensile di $200 di credito. Ogni API viene fatturata separatamente: Maps SDK — $2.83 per 1000 caricamenti mappa, Places API — $4.71 per 1000 richieste, Directions API — $4.71 per 1000 percorsi. Routes API (raccomandato) — $5.00 per 1000 richieste. Il limite gratuito di $200 copre generalmente fino a 70.000 caricamenti mappa al mese.
Per progetti ad alto traffico, Google offre sconti per volumi di 500.000+ richieste al mese. Google Maps SDK non viene addebitato per la visualizzazione di una mappa di base senza interazione — la tariffa si applica solo per il caricamento della mappa. Ogni volta che un utente apre una schermata con una mappa, conta come un caricamento. Ottimizzazione: la memorizzazione nella cache delle tile della mappa riduce il numero di caricamenti alle riaperture.
Limiti: 300 richieste al minuto per Places API (può essere aumentato a 3000 tramite quota in Cloud Console). Per Directions API — 100 richieste al minuto. Il superamento del limite restituisce l'errore OVER_QUERY_LIMIT. Google raccomanda di utilizzare il backoff esponenziale per i tentativi ripetuti. Il monitoraggio dell'utilizzo è disponibile in Google Cloud Console con un ritardo fino a 5 minuti.
Domande frequenti
Google Maps SDK viene fatturato con il modello di pagamento a consumo: $2.83 per 1000 caricamenti mappa. Ogni mese Google fornisce $200 di crediti gratuiti, che coprono fino a 70.000 caricamenti mappa. Places API e Directions API vengono fatturati separatamente. Per progetti piccoli con fino a 10.000 utenti, i costi variano generalmente tra $10 e $50 al mese.
Sì, Google Maps SDK supporta le mappe offline tramite la memorizzazione nella cache delle tile. L'SDK memorizza automaticamente nella cache fino a 1000 tile (circa un'area di 10x10 km). Per il supporto offline completo, utilizzare Google Maps Offline API per Android, che consente di scaricare la mappa di un'intera regione. Le mappe offline non supportano traffico, percorsi o Places API.
Google Maps SDK offre un set di dati più ampio: 250 milioni di luoghi, traffico in tempo reale, Street View, Indoor Maps. Apple MapKit è gratuito ma ha meno dati al di fuori degli Stati Uniti e dell'Europa. Google SDK richiede una chiave API e pagamento, Apple MapKit no. Per progetti multipiattaforma, Google Maps SDK è preferibile con un'unica API per entrambe le piattaforme.
La chiave API viene creata in Google Cloud Console nella sezione APIs and Services, Credentials. È necessario collegare la chiave a un account di fatturazione per attivarla, ma Google fornisce $200 di crediti gratuiti mensili. La chiave può essere limitata per IP, referrer HTTP o pacchetto Android/iOS Bundle ID. Non è richiesta carta di credito per i test.
Sì, Google Maps SDK supporta il clustering tramite la libreria android-maps-utils (Android) e Google-Maps-iOS-Utils (iOS). ClusterManager raggruppa automaticamente i marcatori vicini in un cluster con un indicatore numerico. Ingrandendo, il cluster si divide in marcatori individuali. Il clustering è obbligatorio con 200+ marcatori per mantenere le prestazioni della mappa.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche