Google Maps SDK, mobil ve web uygulamalarına etkileşimli haritalar, coğrafi kodlama, rota ve yer araması entegre etmek için Google’dan bir araç setidir. SDK, Android ve iOS için Maps SDK, coğrafi verilerle çalışmak için Places API ve rota oluşturmak için Directions API’yi içerir. Google Maps hizmetleri günde 100 milyarın üzerinde isteği işleyerek Maps SDK’yı en performanslı haritalama çözümlerinden biri haline getiriyor. Google Maps Platform Documentation, 2025’e göre SDK, harita içeren tüm mobil uygulamaların %60’ında kullanılıyor.
Önemli Noktalar
Google Maps SDK, uygulamalarda coğrafi verilerle çalışmak için araçlar sağlayan kapsamlı bir geliştirici platformudur. Platform birkaç API içerir: Maps SDK (harita görüntüleme), Routes API (rotalar), Places API (yer arama ve coğrafi veriler) ve Geocoding API (adresleri koordinatlara dönüştürme). Her SDK ayrı ayrı entegre olur ve kendi faturalama modeline sahiptir.
Apple MapKit’in aksine, Google Maps SDK daha geniş bir veri seti sunar: 250 milyon yer hakkında bilgi, gerçek zamanlı trafik, Street View panoramaları ve binalar için Indoor Maps. Statista (2025)’e göre Google Maps Platform, mobil uygulamalarda haritalama SDK pazarının %75’ine sahiptir. Temel avantaj, tüm Google Maps hizmetleri için tek bir API anahtarı ve çapraz platform entegrasyonudur (Android, iOS, web).
API anahtarı, Google Maps SDK ile çalışmak için zorunlu bir öğedir. Anahtar Google Cloud Console’da oluşturulur ve belirli bir projeye bağlanır. Android için uygulamanın SHA-1 sertifikasını belirtmek gerekir; iOS için Bundle Identifier belirtilir. Google, yetkisiz erişimi önlemek için API anahtarı kullanımını IP adresleri, HTTP yönlendiricileri veya uygulama paketleriyle sınırlamayı önerir.
Android için Maps SDK, MapView veya SupportMapFragment aracılığıyla bir Android uygulaması içinde etkileşimli Google Haritaları görüntüleyen bir kütüphanedir. SDK şunları destekler: özel harita stilleri, bilgi pencereli işaretçiler, çokgenler ve çoklu çizgiler, trafik ve toplu taşıma katmanları, ayrıca dokunma olayları ve hareketler (yakınlaştırma, döndürme, eğme). Haritalar, modern cihazlarda 60 FPS sağlayan OpenGL kullanır.
Entegrasyon, build.gradle’a bağımlılık eklemek ve AndroidManifest.xml aracılığıyla API anahtarını yapılandırmakla başlar. Android için Google Maps SDK, cihazda Google Play Services gerektirir. Google Play Services mevcut değilse (örneğin Google hizmetleri olmayan Huawei cihazlarda), haritalar görüntülenmez. Bu gibi durumlarda Google, alternatif çözümler veya JavaScript Maps API ile WebView kullanılmasını önerir.
// AndroidManifest.xml — API anahtarı meta verileri
//
// android:value="YOUR_API_KEY"/>
// Activity’de harita parçası
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))
}
} Android’de Google Maps SDK Indoor Maps’i destekler — binaların kat planlarını görüntüleme (havaalanları, alışveriş merkezleri). Etkinleştirmek için sadece map.isIndoorEnabled = true ayarlayın. Trafik katmanı gerçek zamanlı yol yoğunluğunu gösterir — veriler her 2-5 dakikada bir güncellenir. Toplu taşıma katmanı, desteklenen şehirlerde toplu taşıma rotalarını gösterir.
iOS için Maps SDK, Android sürümüyle aynı özellikleri sunar ancak Apple platformuna uyarlanmıştır. Entegrasyon Swift Package Manager veya CocoaPods aracılığıyla yapılır. iOS için Maps SDK, harita oluşturma için Google sunucularını kullanır ancak yerel navigasyon için Apple MapKit ile birlikte çalışabilir. SDK, iOS 15 ve üzerini ve UIViewRepresentable aracılığıyla SwiftUI’yi destekler.
iOS sürümünün belirli bir özelliği, API anahtarıyla Info.plist’in zorunlu yapılandırması ve Google Maps için URL şemasının eklenmesidir. Android’in aksine iOS SDK, Google Play Services gerektirmez ancak bazı işlevler için (örneğin navigasyonda harita açma) Google Maps uygulamasının yüklü olmasını gerektirir. Çapraz platform projeleri için Google, her iki platform için etkinleştirilmiş tek bir API anahtarı önerir.
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
}
}iOS’ta Google Maps SDK, Google Maps Styling formatındaki bir JSON dosyası aracılığıyla özel stilleri destekler. Stiller, uygulama tasarımına göre yolların, suyun, parkların ve binaların renklerini değiştirmeye olanak tanır. Ayrıca veri yoğunluğu görselleştirmesi için Heatmap Layer, harici kaynaklardan coğrafi veri içe aktarmak için KML ve GeoJSON da desteklenir.
Places API, coğrafi yerler hakkında bilgi almak için bir Google Maps Platform hizmetidir: adresler, koordinatlar, derecelendirmeler, çalışma saatleri, fotoğraflar ve yorumlar. Places API iki modda çalışır: Place Search (metin veya yarıçap ile arama) ve Place Details (Place ID ile belirli bir yer hakkında ayrıntılı bilgi). SDK, Android, iOS ve REST API olarak kullanılabilir.
Android ve iOS için Places SDK, uygulamanın metin alanlarına doğrudan adres otomatik tamamlama (Place Autocomplete) yerleştirmeye olanak tanır. Bu, teslimat, taksi ve lojistik uygulamaları için önemli bir özelliktir — kullanıcı bir adres yazmaya başlar ve SDK, Google Maps veritabanından seçenekler önerir. Place Autocomplete, manuel girişe kıyasla adres giriş hatalarını %80 azaltır. Places API faturalaması: Place Details için $2.83/1000 istek, Place Search için $4.71/1000 istek.
// Android’de metinle yer arama
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 — ters coğrafi kodlama (koordinatlardan adrese) ve doğrudan (adresten koordinatlara). Kullanıcının girdiği adresi haritada görüntülemek için koordinatlara dönüştürmek için kullanılır. Geocoding API ayrı olarak faturalandırılır: $4.71/1000 istek. Google, test için hesap başına günde 200 ücretsiz istek sağlar.
Directions API, ulaşım şeklini (araba, yürüme, bisiklet, toplu taşıma) dikkate alarak iki veya daha fazla nokta arasındaki rotaları hesaplamak için bir hizmettir. API, mesafe, seyahat süresi, adım adım talimatlar ve haritada rotayı çizmek için bir çoklu çizgi ile birden çok alternatif rota döndürür. Directions API, REST API ve istemci SDK’ları aracılığıyla kullanılabilir.
Genişletilmiş işlevsellik — Routes API (2024’ten beri Google tarafından önerilen yeni API). Routes API, gerçek zamanlı trafik, çevre dostu yönlendirme ve tahmini varış süresi analizi ile gelişmiş yönlendirme sunar. Google’a göre Routes API, klasik Directions API’ye kıyasla kentsel koşullarda seyahat süresini %20 daha doğru hesaplar. Routes API fiyatı: $5.00/1000 istek.
// Routes API üzerinden rota isteği
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, tek bir rota için 25 ara noktayı (waypoints) destekler. Ara noktalar koordinat veya Place ID olarak belirtilebilir. Noktaların sırasını optimize etmek için (gezgin satıcı problemi) optimize:true parametresini kullanın. Fiyatlandırma: Directions API — $4.71/1000 istek (10 noktaya kadar), her ek nokta istek maliyetine %50 ekler.
Google Maps SDK geniş özelleştirme seçenekleri sunar: JSON stilleri aracılığıyla harita renk şemasını değiştirme, özel işaretçiler (animasyonlu dahil) ekleme, özel içerikli bilgi pencereleri (InfoWindow) ve grafik katmanları kaplama (GroundOverlay, Circle, Polygon). Özelleştirme, haritayı uygulamanın markasına uyarlamaya ve kullanıcı deneyimini iyileştirmeye olanak tanır.
Harita Stili, Google Maps Styling Wizard veya Map Style formatındaki bir JSON dosyası aracılığıyla yapılır. Yolların (featureType: road), suyun (water), parkların (poi.park), binaların (building) ve diğer öğelerin renklerini değiştirebilirsiniz. Koyu temalı uygulamalar için koyu arka plan ve yumuşak renklerle gece stili kullanın. Google Maps, tek bir JSON dosyasında 100 adede kadar stil kuralını destekler.
| Özelleştirme Öğesi | Yöntem/Sınıf | Açıklama |
|---|---|---|
| İşaretçiler | MarkerOptions.icon(BitmapDescriptor) | Kaynaklardan veya URL’den özel işaretçi simgesi |
| Çoklu çizgiler | PolylineOptions.color(width) | Özel renkle rotaları görüntülemek için çizgiler |
| Çokgenler | PolygonOptions.fillColor(strokeColor) | Saydamlık ve konturlu alan doldurma |
| InfoWindow | GoogleMap.setInfoWindowAdapter | Bilgi penceresinin özel içeriği (herhangi bir View) |
| GroundOverlay | GroundOverlayOptions.image(BitmapDescriptor) | Harita alanına yerleştirilmiş görüntü |
Kümeleme — haritada çok sayıda nokta olduğunda işaretçileri kümeler halinde birleştirme. Android ve iOS için Google Maps SDK, yerleşik bir kümeleme yardımcı programı içerir (com.google.maps.android:android-maps-utils). Kümeleme, düşük yakınlaştırma seviyelerinde haritanın işaretçilerle aşırı kalabalık olmasını önler. Yakınlaştırıldığında, küme otomatik olarak tek tek işaretçilere ayrılır. Google’a göre, 1000+ işaretçide kümeleme harita performansını %40 artırır.
Özel bir işaretçi, rota çoklu çizgisi ve bilgi penceresi içeren bir haritayı görüntülemek için tam bir örnek. Uygulama, bir ilgi noktası ve şehir merkezinden oraya bir rota ile Moskova haritasını gösterir. Kod, Google Maps SDK’nın temel özelliklerini gösterir: işaretçi ekleme, çoklu çizgi çizme, kamerayı hareket ettirme ve tıklamaları işleme.
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()
}
}
}Performans önerileri: 200’den fazla nokta olduğunda ClusterManager aracılığıyla eşzamansız işaretçi yükleme kullanın, görünür çoklu çizgi sayısını sınırlayın (Google aynı anda en fazla 100 önerir), tam işlevsellik gerektirmeyen haritalar için Lite Modu kullanın (yakınlaştırma değişikliği olmadan kaydırma). Lite Mod, bellek tüketimini %50 azaltır ve harita yüklemeyi 2 kat hızlandırır.
Google Maps Platform, aylık $200 ücretsiz kredi limiti ile kullandıkça öde modelini kullanır. Her API ayrı olarak faturalandırılır: Maps SDK — $2.83/1000 harita yükleme, Places API — $4.71/1000 istek, Directions API — $4.71/1000 rota. Routes API (önerilen) — $5.00/1000 istek. $200 ücretsiz limit genellikle ayda 70.000 harita yüklemesine kadar kapsar.
Yüksek trafikli projeler için Google, ayda 500.000+ istek hacminde indirimler sunar. Google Maps SDK, etkileşimsiz temel harita görüntüleme için ücretlendirilmez — ücret yalnızca harita yükleme içindir. Bir kullanıcı harita içeren bir ekranı her açışında, bu bir yükleme olarak sayılır. Optimizasyon: harita döşeme önbelleklemesi, tekrarlanan açılışlarda yükleme sayısını azaltır.
Limitler: Places API için dakikada 300 istek (Cloud Console’da kota aracılığıyla 3000’e yükseltilebilir). Directions API için — dakikada 100 istek. Limit aşımı OVER_QUERY_LIMIT hatası döndürür. Google, yeniden deneme istekleri için üstel geri alma (exponential backoff) kullanılmasını önerir. Kullanım izleme, Google Cloud Console’da 5 dakikaya kadar gecikmeyle kullanılabilir.
Sıkça Sorulan Sorular
Google Maps SDK, kullandıkça öde modeliyle faturalandırılır: $2.83/1000 harita yükleme. Google her ay 70.000 harita yüklemesine kadar kapsayan $200 ücretsiz kredi sağlar. Places API ve Directions API ayrı olarak faturalandırılır. 10.000 kullanıcıya kadar küçük projeler için maliyetler genellikle ayda $10-50 arasındadır.
Evet, Google Maps SDK, döşeme önbellekleme yoluyla çevrimdışı haritaları destekler. SDK otomatik olarak 1000 döşemeye kadar (yaklaşık 10x10 km alan) önbelleğe alır. Tam çevrimdışı destek için, tüm bir bölgenin haritasını indirmeye olanak tanıyan Android için Google Maps Offline API’yi kullanın. Çevrimdışı haritalar trafik, rota veya Places API’yi desteklemez.
Google Maps SDK daha geniş bir veri seti sunar: 250 milyon yer, gerçek zamanlı trafik, Street View, Indoor Maps. Apple MapKit ücretsizdir ancak ABD ve Avrupa dışında daha az veriye sahiptir. Google SDK, API anahtarı ve ödeme gerektirirken Apple MapKit gerektirmez. Çapraz platform projeleri için, her iki platform için tek bir API ile Google Maps SDK tercih edilir.
API anahtarı, Google Cloud Console’da APIs and Services, Credentials bölümünde oluşturulur. Anahtarı etkinleştirmek için bir faturalama hesabına bağlamanız gerekir, ancak Google aylık $200 ücretsiz kredi sağlar. Anahtar IP, HTTP yönlendiricisi veya Android paketi/iOS Bundle ID ile sınırlandırılabilir. Test için kredi kartı gerekmez.
Evet, Google Maps SDK, android-maps-utils kitaplığı (Android) ve Google-Maps-iOS-Utils (iOS) aracılığıyla kümelemeyi destekler. ClusterManager, yakındaki işaretçileri otomatik olarak sayısal göstergeye sahip bir kümeye gruplandırır. Yakınlaştırıldığında, küme tek tek işaretçilere ayrılır. 200+ işaretçide harita performansını korumak için kümeleme zorunludur.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun