Google Maps SDK — е набор от инструменти от Google за интегриране на интерактивни карти, геокодиране, маршрути и търсене на места в мобилни и уеб приложения. SDK включва Maps SDK за Android и iOS, Places API за работа с геоданни и Directions API за изграждане на маршрути. Услугите на Google Maps обработват над 100 милиарда заявки на ден, което прави Maps SDK едно от най-производителните картографски решения. Според Google Maps Platform Documentation, 2025, SDK се използва в 60% от всички мобилни приложения с карти.
Основни точки
Google Maps SDK — е цялостна платформа за разработчици, предоставяща инструменти за работа с географски данни в приложения. Платформата включва няколко API: Maps SDK (показване на карти), Routes API (маршрути), Places API (търсене на места и геоданни) и Geocoding API (преобразуване на адреси в координати). Всяко SDK се интегрира отделно и има свой собствен модел на таксуване.
За разлика от Apple MapKit, Google Maps SDK предлага по-широк набор от данни: информация за 250 милиона места, трафик в реално време, панорами Street View и Indoor Maps за вътрешни пространства. Според Statista (2025), Google Maps Platform притежава 75% от пазара на картографски SDK в мобилните приложения. Ключовото предимство — единен API ключ за всички услуги на Google Maps и междуплатформена интеграция (Android, iOS, уеб).
API ключ — задължителен елемент за работа с Google Maps SDK. Ключът се създава в Google Cloud Console и се обвързва с конкретен проект. За Android е необходимо допълнително да се посочи SHA-1 на сертификата на приложението, за iOS — Bundle Identifier. Google препоръчва ограничаване на използването на API ключа по IP адреси, HTTP реферери или пакети на приложения за предотвратяване на неоторизиран достъп.
Maps SDK за Android — е библиотека, която показва интерактивни Google карти вътре в Android приложение чрез MapView или SupportMapFragment. SDK поддържа: персонализирани стилове на карти, маркери с информационни прозорци, многоъгълници и полилинии, слоеве за трафик и транспорт, както и сензорни събития и жестове (зум, завъртане, накланяне). Картите използват OpenGL за рендиране, осигурявайки 60 FPS на съвременни устройства.
Интеграцията започва с добавяне на зависимост в build.gradle и конфигуриране на API ключа чрез AndroidManifest.xml. Google Maps SDK за Android изисква Google Play Services на устройството. Ако Google Play Services липсва (напр. на Huawei устройства без Google услуги), картите няма да се покажат. За такива случаи Google препоръчва алтернативни решения или WebView с JavaScript Maps API.
// AndroidManifest.xml — метаданни на API ключ
// <meta-data android:name="com.google.android.geo.API_KEY"
// android:value="YOUR_API_KEY"/>
// Фрагмент от карта в 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 на Android поддържа Indoor Maps — показване на планове на сгради (летища, търговски центрове). За активиране е достатъчно да зададете map.isIndoorEnabled = true. Слоят за трафик (Traffic Layer) показва натовареността на пътищата в реално време — данните се актуализират на всеки 2-5 минути. Слоят за транспорт (Transit Layer) показва маршрути на обществения транспорт в поддържани градове.
Maps SDK за iOS предоставя същите възможности като Android версията, но адаптирани за платформата Apple. Интеграцията се осъществява чрез Swift Package Manager или CocoaPods. Maps SDK за iOS използва Google сървъри за рендиране на карти, но може да работи заедно с Apple MapKit за естествена навигация. SDK поддържа iOS 15 и по-нови версии, както и SwiftUI чрез UIViewRepresentable.
Особеност на iOS версията — задължителна конфигурация на Info.plist с посочване на API ключа и добавяне на URL схема за Google Maps. За разлика от Android, iOS SDK не изисква Google Play Services, но изисква инсталирано приложение Google Maps за някои функции (напр. отваряне на карти в навигация). За междуплатформени проекти Google препоръчва единен API ключ на проект, активиран и за двете платформи.
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 Google Maps SDK поддържа персонализирани стилове чрез JSON файл във формат Google Maps Styling. Стиловете позволяват промяна на цветовете на пътища, вода, паркове и сгради според дизайна на приложението. Също така се поддържат Heatmap Layer за визуализация на плътност на данни, KML и GeoJSON за импортиране на географски данни от външни източници.
Places API — е услуга на Google Maps Platform за получаване на информация за географски места: адреси, координати, рейтинг, работно време, снимки и отзиви. Places API работи в два режима: Place Search (търсене на места по текст или радиус) и Place Details (получаване на подробна информация за конкретно място по Place ID). SDK е достъпен за Android, iOS и като REST API.
Places SDK за Android и iOS позволява вграждане на автоматично попълване на адреси (Place Autocomplete) директно в текстовите полета на приложението. Това е ключова функция за приложения за доставка, такси и логистика — потребителят започва да въвежда адрес, а SDK предлага опции от базата данни на Google Maps. Place Autocomplete намалява грешките при въвеждане на адрес с 80% в сравнение с ръчното въвеждане. Таксуване Places API: $2.83 на 1000 заявки Place Details, Place Search — $4.71 на 1000.
// Търсене на място по текст на 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 — обратно геокодиране (координати → адрес) и директно (адрес → координати). Използва се за преобразуване на въведения от потребителя адрес в координати за показване на картата. Geocoding API се таксува отделно: $4.71 на 1000 заявки. Google предоставя 200 безплатни заявки на ден на акаунт за тестване.
Directions API — услуга за изчисляване на маршрути между две или повече точки, като се взема предвид видът транспорт (автомобил, пеша, велосипед, обществен транспорт). API връща няколко алтернативни маршрута с посочване на разстояние, време за пътуване, инструкции стъпка по стъпка и полилиния за изчертаване на маршрута върху картата. Directions API е достъпен като REST API и чрез клиентски SDK.
Разширена функционалност — Routes API (нов API, препоръчан от Google от 2024 г.). Routes API предлага подобрено маршрутизиране, като взема предвид трафика в реално време, екологичния отпечатък (eco-friendly routing) и предиктивен анализ на времето за пристигане. Според Google, Routes API изчислява времето за пътуване с 20% по-точно в градски условия в сравнение с класическия Directions API. Routes API се таксува: $5.00 на 1000 заявки.
// Заявка за маршрут чрез 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 поддържа до 25 междинни точки (waypoints) за един маршрут. Междинните точки могат да бъдат зададени като координати или Place ID. За оптимизация на реда на точките (проблем на пътуващия търговец) използвайте параметъра optimize:true. Таксуване: Directions API — $4.71 на 1000 заявки (до 10 точки), всяка допълнителна точка добавя 50% към цената на заявката.
Google Maps SDK предоставя широки възможности за персонализиране: промяна на цветовата схема на картата чрез JSON стилове, добавяне на персонализирани маркери (включително анимирани), информационни прозорци (InfoWindow) с произволно съдържание и наслагване на графични слоеве (GroundOverlay, Circle, Polygon). Персонализирането позволява адаптиране на картата към марката на приложението и подобряване на потребителското изживяване.
Стилизация на карти се извършва чрез Google Maps Styling Wizard или JSON файл във формат Map Style. Могат да се променят цветовете на пътищата (featureType: road), водата (water), парковете (poi.park), сградите (building) и други елементи. За карти в тъмна тема на приложението използвайте нощен стил с тъмен фон и приглушени цветове. Google Maps поддържа до 100 стилови правила в един JSON файл.
| Елемент на персонализиране | Метод/Клас | Описание |
|---|---|---|
| Маркери | MarkerOptions.icon(BitmapDescriptor) | Персонализирана икона на маркер от ресурси или URL |
| Полилинии | PolylineOptions.color(width) | Линии за показване на маршрути с персонализиран цвят |
| Многоъгълници | PolygonOptions.fillColor(strokeColor) | Запълване на област с прозрачност и контур |
| InfoWindow | GoogleMap.setInfoWindowAdapter | Персонализирано съдържание на информационния прозорец (произволен View) |
| GroundOverlay | GroundOverlayOptions.image(BitmapDescriptor) | Изображение, поставено върху област на картата |
Clustering — обединяване на маркери в клъстери при голям брой точки на картата. Google Maps SDK за Android и iOS включва вградена помощна програма за клъстеризация (com.google.maps.android:android-maps-utils). Клъстеризацията предотвратява претоварване на картата с маркери при зумирания под определено ниво. При зумиране клъстерът автоматично се разпада на отделни маркери. Според Google, клъстеризацията подобрява производителността на картата с 40% при 1000+ маркера.
Пълен пример за показване на карта с персонализиран маркер, полилиния на маршрут и информационен прозорец. Приложението показва карта на Москва с точка на интерес и маршрут до нея от центъра на града. Кодът демонстрира основните възможности на Google Maps SDK: добавяне на маркер, рисуване на полилиния, преместване на камера и обработка на кликвания.
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("Кремъл")
.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()
}
}
}Препоръки за производителност: използвайте асинхронно зареждане на маркери чрез ClusterManager при брой точки над 200, ограничете броя на видимите полилинии (Google препоръчва не повече от 100 едновременно), използвайте Lite Mode за карти, които не изискват пълна функционалност (превъртане без промяна на зума). Lite Mode намалява консумацията на памет с 50% и ускорява зареждането на картата 2 пъти.
Google Maps Platform използва модел на плащане Pay-as-you-go с месечен безплатен лимит от $200 кредити. Всяко API се таксува отделно: Maps SDK — $2.83 на 1000 зареждания на карта, Places API — $4.71 на 1000 заявки, Directions API — $4.71 на 1000 маршрута. Routes API (препоръчан) — $5.00 на 1000 заявки. Безплатният лимит от $200 обикновено покрива до 70 000 зареждания на карти на месец.
За проекти с високо натоварване Google предлага отстъпки при обем от 500 000 заявки на месец. Google Maps SDK не се таксува за показване на базова карта без взаимодействие — такса се начислява само за зареждане (map load). Всеки път, когато потребителят отвори екран с карта, това се счита за едно зареждане. Оптимизация: кеширане на тайлове на картата намалява броя на зарежданията при повторно отваряне.
Лимити: 300 заявки в минута за Places API (може да се увеличи до 3000 чрез квота в Cloud Console). За Directions API — 100 заявки в минута. Превишаването на лимита връща грешка OVER_QUERY_LIMIT. Google препоръчва използване на експоненциално забавяне (exponential backoff) за повторни заявки. Мониторингът на използването е достъпен в Google Cloud Console със закъснение до 5 минути.
Често задавани въпроси
Google Maps SDK се таксува по модела pay-as-you-go: $2.83 на 1000 зареждания на карта. Всеки месец Google предоставя $200 безплатни кредити, които покриват до 70 000 зареждания. Places API и Directions API се таксуват отделно. За малки проекти с аудитория до 10 000 потребители разходите обикновено са $10-50 на месец.
Да, Google Maps SDK поддържа офлайн карти чрез кеширане на тайлове. SDK автоматично кешира до 1000 тайла (приблизително 10x10 km област). За пълна офлайн поддръжка използвайте Google Maps Offline API за Android, който позволява изтегляне на карта на цял регион. Офлайн картите не поддържат трафик, маршрути и Places API.
Google Maps SDK предлага по-широк набор от данни: 250 милиона места, трафик в реално време, Street View, Indoor Maps. Apple MapKit е безплатен, но има по-малко данни извън САЩ и Европа. Google SDK изисква API ключ и плащане, Apple MapKit — не. За междуплатформени проекти Google Maps SDK е за предпочитане поради единен API ключ на двете платформи.
API ключът се създава в Google Cloud Console чрез секцията APIs & Services → Credentials. За активиране ключът трябва да бъде свързан с платежен акаунт, но Google предоставя $200 безплатни кредити месечно. Ключът може да бъде ограничен по IP, HTTP реферер или Android пакет / iOS Bundle ID. За тестване не се изисква въвеждане на данни от банкова карта.
Да, Google Maps SDK поддържа клъстеризация чрез библиотеката android-maps-utils (Android) и Google-Maps-iOS-Utils (iOS). ClusterManager автоматично обединява близки маркери в клъстер с числов индикатор. При зумиране клъстерът се разпада на отделни маркери. Клъстеризацията е задължителна при 200+ маркера за запазване на производителността на картата.
Обобщение
Ще разработим мобилно приложение под ключ
IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също