Google Maps SDK — este un set de instrumente de la Google pentru integrarea hărților interactive, geocodificării, rutelor și căutării de locuri în aplicații mobile și web. SDK-ul include Maps SDK pentru Android și iOS, Places API pentru lucrul cu date geografice și Directions API pentru construirea rutelor. Serviciile Google Maps procesează peste 100 de miliarde de cereri pe zi, făcând Maps SDK una dintre cele mai performante soluții cartografice. Conform Google Maps Platform Documentation, 2025, SDK-ul este utilizat în 60% din toate aplicațiile mobile cu hărți.
Principalele puncte
Google Maps SDK — este o platformă complexă pentru dezvoltatori, care oferă instrumente pentru lucrul cu date geografice în aplicații. Platforma include mai multe API-uri: Maps SDK (afișarea hărților), Routes API (rute), Places API (căutarea locurilor și date geografice) și Geocoding API (conversia adreselor în coordonate). Fiecare SDK se integrează separat și are propriul model de facturare.
Spre deosebire de Apple MapKit, Google Maps SDK oferă un set mai larg de date: informații despre 250 de milioane de locuri, trafic în timp real, panorame Street View și Indoor Maps pentru interiorul clădirilor. Conform Statista (2025), Google Maps Platform deține 75% din piața SDK-urilor cartografice în aplicațiile mobile. Avantajul cheie — o cheie API unică pentru toate serviciile Google Maps și integrare cross-platform (Android, iOS, web).
Cheia API — element obligatoriu pentru lucrul cu Google Maps SDK. Cheia se creează în Google Cloud Console și se leagă de un anumit proiect. Pentru Android este necesar să se specifice SHA-1 al certificatului aplicației, pentru iOS — Bundle Identifier. Google recomandă limitarea utilizării cheii API după adrese IP, referenți HTTP sau pachete de aplicații pentru a preveni accesul neautorizat.
Maps SDK pentru Android — este o bibliotecă care afișează hărți interactive Google în interiorul unei aplicații Android prin MapView sau SupportMapFragment. SDK-ul suportă: stiluri personalizate de hărți, marcaje cu ferestre informative, poligoane și polilinii, straturi de trafic și transport, precum și evenimente tactile și gesturi (zoom, rotire, înclinare). Hărțile folosesc OpenGL pentru randare, asigurând 60 FPS pe dispozitive moderne.
Integrarea începe cu adăugarea dependenței în build.gradle și configurarea cheii API prin AndroidManifest.xml. Google Maps SDK pentru Android necesită Google Play Services pe dispozitiv. Dacă Google Play Services lipsește (de exemplu, pe dispozitive Huawei fără servicii Google), hărțile nu se vor afișa. Pentru astfel de cazuri, Google recomandă utilizarea soluțiilor alternative sau WebView cu JavaScript Maps API.
// AndroidManifest.xml — metadatele cheii API
// <meta-data android:name="com.google.android.geo.API_KEY"
// android:value="YOUR_API_KEY"/>
// Fragment de hartă în 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 pe Android suportă Indoor Maps — afișarea planurilor clădirilor (aeroporturi, centre comerciale). Pentru activare, este suficient să setați map.isIndoorEnabled = true. Stratul de trafic (Traffic Layer) arată aglomerația drumurilor în timp real — datele se actualizează la fiecare 2-5 minute. Stratul de transport (Transit Layer) afișează rutele de transport public în orașele suportate.
Maps SDK pentru iOS oferă aceleași capacități ca versiunea Android, dar adaptate pentru platforma Apple. Integrarea se face prin Swift Package Manager sau CocoaPods. Maps SDK pentru iOS folosește serverele Google pentru randarea hărților, dar poate funcționa împreună cu Apple MapKit pentru navigația nativă. SDK-ul suportă iOS 15 și versiuni superioare, precum și SwiftUI prin UIViewRepresentable.
Particularitatea versiunii iOS — configurarea obligatorie a Info.plist cu specificarea cheii API și adăugarea schemei URL pentru Google Maps. Spre deosebire de Android, iOS SDK nu necesită Google Play Services, dar necesită aplicația Google Maps instalată pentru unele funcții (de exemplu, deschiderea hărților în navigație). Pentru proiecte cross-platform, Google recomandă o cheie API unică pe proiect, activată pentru ambele platforme.
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
}
}Pe iOS Google Maps SDK suportă stiluri personalizate printr-un fișier JSON în format Google Maps Styling. Stilurile permit schimbarea culorilor drumurilor, apei, parcurilor și clădirilor conform designului aplicației. De asemenea, sunt suportate Heatmap Layer pentru vizualizarea densității datelor, KML și GeoJSON pentru importarea datelor geografice din surse externe.
Places API — este serviciul Google Maps Platform pentru obținerea informațiilor despre locurile geografice: adrese, coordonate, rating, ore de funcționare, fotografii și recenzii. Places API funcționează în două moduri: Place Search (căutarea locurilor după text sau rază) și Place Details (obținerea informațiilor detaliate despre un anumit loc după Place ID). SDK-ul este disponibil pentru Android, iOS și ca REST API.
Places SDK pentru Android și iOS permite încorporarea autocompletării adreselor (Place Autocomplete) direct în câmpurile de text ale aplicației. Aceasta este o funcție cheie pentru aplicațiile de livrare, taxi și logistică — utilizatorul începe să tasteze adresa, iar SDK-ul propune opțiuni din baza Google Maps. Place Autocomplete reduce numărul de erori de introducere a adresei cu 80% comparativ cu introducerea manuală. Facturare Places API: $2.83 per 1000 de cereri Place Details, Place Search — $4.71 per 1000.
// Căutarea unui loc după text pe 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 — geocodificare inversă (coordonate → adresă) și directă (adresă → coordonate). Este utilizat pentru conversia adresei introduse de utilizator în coordonate pentru afișarea pe hartă. Geocoding API se facturează separat: $4.71 per 1000 de cereri. Google oferă 200 de cereri gratuite pe zi per cont pentru testare.
Directions API — serviciu pentru calcularea rutelor între două sau mai multe puncte, ținând cont de mijlocul de transport (mașină, pieton, bicicletă, transport public). API-ul returnează mai multe rute alternative cu indicarea distanței, timpului de călătorie, instrucțiunilor pas cu pas și a poliliniei pentru trasarea rutei pe hartă. Directions API este disponibil ca REST API și prin SDK-uri client.
Funcționalitatea extinsă — Routes API (API nou, recomandat de Google din 2024). Routes API oferă rutare îmbunătățită cu luarea în considerare a traficului în timp real, a amprentei ecologice (eco-friendly routing) și a analizei predictive a timpului de sosire. Conform Google, Routes API calculează timpul de călătorie cu 20% mai precis în condiții urbane comparativ cu Directions API clasic. Routes API se facturează: $5.00 per 1000 de cereri.
// Solicitare rută prin 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 suportă până la 25 de puncte intermediare (waypoints) pentru o rută. Punctele intermediare pot fi specificate ca coordonate sau Place ID. Pentru optimizarea ordinii punctelor (problema comis-voiajorului), utilizați parametrul optimize:true. Facturare: Directions API — $4.71 per 1000 de cereri (până la 10 puncte), fiecare punct suplimentar adaugă 50% la costul cererii.
Google Maps SDK oferă posibilități extinse de personalizare: schimbarea schemei de culori a hărții prin stiluri JSON, adăugarea de marcaje personalizate (inclusiv animate), ferestre informative (InfoWindow) cu conținut arbitrar și suprapunerea straturilor grafice (GroundOverlay, Circle, Polygon). Personalizarea permite adaptarea hărții la brandul aplicației și îmbunătățirea experienței utilizatorului.
Stilizarea hărților se realizează prin Google Maps Styling Wizard sau fișier JSON în format Map Style. Se pot schimba culorile drumurilor (featureType: road), apei (water), parcurilor (poi.park), clădirilor (building) și altor elemente. Pentru hărți în tema întunecată a aplicației, utilizați stilul nocturn cu fundal întunecat și culori atenuate. Google Maps suportă până la 100 de reguli de stil într-un singur fișier JSON.
| Element de personalizare | Metodă/Clasă | Descriere |
|---|---|---|
| Marcaje | MarkerOptions.icon(BitmapDescriptor) | Pictogramă personalizată a marcajului din resurse sau URL |
| Polilinii | PolylineOptions.color(width) | Linii pentru afișarea rutelor cu culoare personalizată |
| Poligoane | PolygonOptions.fillColor(strokeColor) | Umplerea zonei cu transparență și contur |
| InfoWindow | GoogleMap.setInfoWindowAdapter | Conținut personalizat al ferestrei informative (orice View) |
| GroundOverlay | GroundOverlayOptions.image(BitmapDescriptor) | Imagine suprapusă pe o zonă a hărții |
Clustering — combinarea marcajelor în clustere la un număr mare de puncte pe hartă. Google Maps SDK pentru Android și iOS include o utilitate încorporată de grupare (com.google.maps.android:android-maps-utils). Clustering previne supraîncărcarea hărții cu marcaje la zoomuri sub un anumit nivel. La zoom, clusterul se descompune automat în marcaje individuale. Conform Google, gruparea îmbunătățește performanța hărții cu 40% la 1000+ marcaje.
Exemplu complet de afișare a hărții cu marcaj personalizat, polilinie de rută și fereastră informativă. Aplicația arată harta Moscovei cu un punct de interes și ruta până la acesta din centrul orașului. Codul demonstrează capacitățile de bază ale Google Maps SDK: adăugarea marcajului, desenarea poliliniei, mutarea camerei și gestionarea clicurilor.
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("Kremlin")
.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()
}
}
}Recomandări de performanță: utilizați încărcarea asincronă a marcajelor prin ClusterManager la peste 200 de puncte, limitați numărul de polilinii vizibile (Google recomandă nu mai mult de 100 simultan), utilizați Lite Mode pentru hărțile care nu necesită funcționalitate completă (derulare fără schimbarea zoomului). Lite Mode reduce consumul de memorie cu 50% și accelerează încărcarea hărții de 2 ori.
Google Maps Platform utilizează modelul de plată Pay-as-you-go cu un limită lunară gratuită de $200 credite. Fiecare API se facturează separat: Maps SDK — $2.83 per 1000 de încărcări de hartă, Places API — $4.71 per 1000 de cereri, Directions API — $4.71 per 1000 de rute. Routes API (recomandat) — $5.00 per 1000 de cereri. Limita gratuită de $200 acoperă de obicei până la 70 000 de încărcări de hărți pe lună.
Pentru proiecte cu trafic ridicat, Google oferă reduceri la un volum de la 500 000 de cereri pe lună. Google Maps SDK nu se facturează pentru afișarea hărții de bază fără interacțiune — taxa se percepe doar pentru încărcare (map load). De fiecare dată când utilizatorul deschide ecranul cu harta, aceasta se consideră o încărcare. Optimizare: memorarea în cache a dalelor hărții reduce numărul de încărcări la redeschidere.
Limite: 300 de cereri pe minut pentru Places API (poate fi mărit la 3000 prin cotă în Cloud Console). Pentru Directions API — 100 de cereri pe minut. Depășirea limitei returnează eroarea OVER_QUERY_LIMIT. Google recomandă utilizarea întârzierii exponențiale (exponential backoff) pentru cererile repetate. Monitorizarea utilizării este disponibilă în Google Cloud Console cu o întârziere de până la 5 minute.
Întrebări frecvente
Google Maps SDK se facturează după modelul pay-as-you-go: $2.83 per 1000 de încărcări de hartă. În fiecare lună, Google oferă $200 credite gratuite care acoperă până la 70 000 de încărcări. Places API și Directions API se facturează separat. Pentru proiecte mici cu o audiență de până la 10 000 de utilizatori, costurile sunt de obicei de $10-50 pe lună.
Da, Google Maps SDK suportă hărți offline prin memorarea în cache a dalelor. SDK-ul memorează automat până la 1000 de dale (aproximativ 10x10 km de suprafață). Pentru suport offline complet, utilizați Google Maps Offline API pentru Android, care permite descărcarea hărții unei întregi regiuni. Hărțile offline nu suportă trafic, rute și Places API.
Google Maps SDK oferă un set mai larg de date: 250 de milioane de locuri, trafic în timp real, Street View, Indoor Maps. Apple MapKit este gratuit, dar are mai puține date în afara SUA și Europei. Google SDK necesită cheie API și plată, Apple MapKit — nu. Pentru proiecte cross-platform, Google Maps SDK este preferabil datorită unei chei API unice pe ambele platforme.
Cheia API se creează în Google Cloud Console prin secțiunea APIs & Services → Credentials. Pentru activare, cheia trebuie legată de un cont de plată, dar Google oferă $200 credite gratuite lunar. Cheia poate fi limitată după IP, referent HTTP sau pachet Android / iOS Bundle ID. Pentru testare nu este necesară introducerea datelor cardului bancar.
Da, Google Maps SDK suportă gruparea prin biblioteca android-maps-utils (Android) și Google-Maps-iOS-Utils (iOS). ClusterManager combină automat marcajele apropiate într-un cluster cu indicator numeric. La zoom, clusterul se descompune în marcaje individuale. Gruparea este obligatorie la 200+ marcaje pentru menținerea performanței hărții.
Rezumat
Vom dezvolta o aplicație mobilă la cheie
IT Sectr creează aplicații iOS și Android pentru startup-uri și afaceri din 2017. Vă vom consilia și vă vom propune cea mai bună soluție.
Citiți și