Google Maps SDK é um conjunto de ferramentas do Google para integrar mapas interativos, geocodificação, rotas e pesquisa de lugares em aplicativos móveis e web. O SDK inclui o Maps SDK para Android e iOS, o Places API para trabalhar com geodados e o Directions API para construção de rotas. Os serviços do Google Maps processam mais de 100 bilhões de solicitações por dia, tornando o Maps SDK uma das soluções de mapeamento mais eficientes. De acordo com Google Maps Platform Documentation, 2025, o SDK é usado em 60% de todos os aplicativos móveis com mapas.
Principais conclusões
Google Maps SDK é uma plataforma abrangente para desenvolvedores que fornece ferramentas para trabalhar com dados geográficos em aplicativos. A plataforma inclui várias APIs: Maps SDK (exibição de mapas), Routes API (rotas), Places API (pesquisa de lugares e geodados) e Geocoding API (conversão de endereços em coordenadas). Cada SDK se integra separadamente e tem seu próprio modelo de faturamento.
Ao contrário do Apple MapKit, o Google Maps SDK oferece um conjunto mais amplo de dados: informação sobre 250 milhões de lugares, trânsito em tempo real, panoramas do Street View e Indoor Maps para edifícios. De acordo com Statista (2025), o Google Maps Platform detém 75% do mercado de SDK de mapeamento em aplicativos móveis. A principal vantagem é uma única chave de API para todos os serviços do Google Maps e integração multiplataforma (Android, iOS, web).
A chave de API é um elemento obrigatório para trabalhar com o Google Maps SDK. A chave é criada no Google Cloud Console e vinculada a um projeto específico. Para Android, é necessário especificar o certificado SHA-1 do aplicativo; para iOS — o Bundle Identifier. O Google recomenda restringir o uso da chave de API por endereços IP, referenciadores HTTP ou pacotes de aplicativos para evitar acesso não autorizado.
Maps SDK para Android é uma biblioteca que exibe mapas interativos do Google dentro de um aplicativo Android através do MapView ou SupportMapFragment. O SDK suporta: estilos de mapa personalizados, marcadores com janelas de informação, polígonos e polilinhas, camadas de trânsito e transporte, bem como eventos de toque e gestos (zoom, rotação, inclinação). Os mapas usam OpenGL para renderização, oferecendo 60 FPS em dispositivos modernos.
A integração começa adicionando a dependência no build.gradle e configurando a chave de API através do AndroidManifest.xml. Google Maps SDK para Android requer o Google Play Services no dispositivo. Se o Google Play Services não estiver disponível (por exemplo, em dispositivos Huawei sem serviços do Google), os mapas não serão exibidos. Para esses casos, o Google recomenda usar soluções alternativas ou WebView com JavaScript Maps API.
// AndroidManifest.xml — metadados da chave de API
//
// android:value="YOUR_API_KEY"/>
// Fragmento de mapa na 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 no Android suporta Indoor Maps — exibição de plantas de edifícios (aeroportos, shoppings). Basta definir map.isIndoorEnabled = true para ativá-lo. A camada de trânsito mostra a congestionamento das estradas em tempo real — os dados são atualizados a cada 2-5 minutos. A camada de transporte exibe rotas de transporte público nas cidades suportadas.
Maps SDK para iOS fornece os mesmos recursos da versão Android, mas adaptados à plataforma Apple. A integração é feita através do Swift Package Manager ou CocoaPods. O Maps SDK para iOS usa servidores do Google para renderização de mapas, mas pode funcionar junto com o Apple MapKit para navegação nativa. O SDK suporta iOS 15 e superior, bem como SwiftUI através do UIViewRepresentable.
Uma característica específica da versão iOS é a configuração obrigatória do Info.plist com a chave de API e a adição do esquema de URL para o Google Maps. Ao contrário do Android, o SDK do iOS não requer o Google Play Services, mas requer o aplicativo Google Maps instalado para algumas funções (por exemplo, abrir mapas na navegação). Para projetos multiplataforma, o Google recomenda uma única chave de API por projeto, ativada para ambas as plataformas.
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
}
}No iOS, Google Maps SDK suporta estilos personalizados através de um arquivo JSON no formato Google Maps Styling. Os estilos permitem alterar as cores de estradas, água, parques e edifícios de acordo com o design do aplicativo. Também são suportados Heatmap Layer para visualização de densidade de dados, KML e GeoJSON para importar dados geográficos de fontes externas.
Places API é um serviço do Google Maps Platform para obter informações sobre lugares geográficos: endereços, coordenadas, avaliações, horários, fotos e avaliações. O Places API opera em dois modos: Place Search (pesquisa por texto ou raio) e Place Details (informações detalhadas sobre um local específico por Place ID). O SDK está disponível para Android, iOS e como API REST.
Places SDK para Android e iOS permite incorporar o preenchimento automático de endereços (Place Autocomplete) diretamente nos campos de texto do aplicativo. Este é um recurso essencial para aplicativos de entrega, táxi e logística — o usuário começa a digitar um endereço e o SDK sugere opções do banco de dados do Google Maps. Place Autocomplete reduz os erros de digitação de endereço em 80% em comparação com a digitação manual. Faturamento do Places API: $2.83 por 1000 solicitações Place Details, Place Search — $4.71 por 1000.
// Pesquisar lugar por texto no 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ção reversa (coordenadas para endereço) e direta (endereço para coordenadas). Usado para converter um endereço inserido pelo usuário em coordenadas para exibição no mapa. O Geocoding API é faturado separadamente: $4.71 por 1000 solicitações. O Google fornece 200 solicitações gratuitas por dia por conta para testes.
Directions API é um serviço para calcular rotas entre dois ou mais pontos considerando o modo de transporte (carro, a pé, bicicleta, transporte público). A API retorna várias rotas alternativas com distância, tempo de viagem, instruções passo a passo e uma polilinha para desenhar a rota no mapa. O Directions API está disponível como API REST e através de SDKs de cliente.
Funcionalidade estendida — Routes API (nova API recomendada pelo Google desde 2024). O Routes API oferece roteamento melhorado com trânsito em tempo real, roteamento ecológico e análise preditiva de horário de chegada. De acordo com o Google, o Routes API calcula o tempo de viagem 20% mais precisamente em condições urbanas em comparação com o Directions API clássico. O Routes API é faturado a $5.00 por 1000 solicitações.
// Solicitação de rota via 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 suporta até 25 pontos de passagem (waypoints) para uma única rota. Os waypoints podem ser especificados como coordenadas ou Place IDs. Para otimizar a ordem dos pontos (problema do caixeiro viajante), use o parâmetro optimize:true. Preços: Directions API — $4.71 por 1000 solicitações (até 10 pontos), cada ponto adicional adiciona 50% ao custo da solicitação.
Google Maps SDK fornece amplas opções de personalização: alteração do esquema de cores do mapa através de estilos JSON, adição de marcadores personalizados (incluindo animados), janelas de informação (InfoWindow) com conteúdo personalizado e sobreposição de camadas gráficas (GroundOverlay, Circle, Polygon). A personalização permite adaptar o mapa à marca do aplicativo e melhorar a experiência do usuário.
Estilização de mapas é feita através do Google Maps Styling Wizard ou de um arquivo JSON no formato Map Style. Você pode alterar as cores de estradas (featureType: road), água (water), parques (poi.park), edifícios (building) e outros elementos. Para mapas em temas escuros, use um estilo noturno com fundo escuro e cores suaves. O Google Maps suporta até 100 regras de estilo em um único arquivo JSON.
| Elemento de personalização | Método/Classe | Descrição |
|---|---|---|
| Marcadores | MarkerOptions.icon(BitmapDescriptor) | Ícone de marcador personalizado de recursos ou URL |
| Polilinhas | PolylineOptions.color(width) | Linhas para exibir rotas com cor personalizada |
| Polígonos | PolygonOptions.fillColor(strokeColor) | Preenchimento de área com transparência e contorno |
| InfoWindow | GoogleMap.setInfoWindowAdapter | Conteúdo personalizado da janela de informação (qualquer View) |
| GroundOverlay | GroundOverlayOptions.image(BitmapDescriptor) | Imagem sobreposta na área do mapa |
Clustering — combinação de marcadores em clusters quando há um grande número de pontos no mapa. O Google Maps SDK para Android e iOS inclui um utilitário de clustering integrado (com.google.maps.android:android-maps-utils). O clustering evita a sobrecarga do mapa com marcadores em níveis de zoom baixos. Ao aplicar zoom, o cluster se divide automaticamente em marcadores individuais. De acordo com o Google, o clustering melhora o desempenho do mapa em 40% com 1000+ marcadores.
Um exemplo completo de exibição de um mapa com um marcador personalizado, polilinha de rota e janela de informação. O aplicativo mostra um mapa de Moscou com um ponto de interesse e uma rota até ele a partir do centro da cidade. O código demonstra os principais recursos do Google Maps SDK: adicionar um marcador, desenhar uma polilinha, mover a câmera e manipular cliques.
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()
}
}
}Recomendações de desempenho: use carregamento assíncrono de marcadores via ClusterManager quando houver mais de 200 pontos, limite o número de polilinhas visíveis (o Google recomenda no máximo 100 simultaneamente), use o Lite Mode para mapas que não exigem funcionalidade completa (rolagem sem alterações de zoom). O Lite Mode reduz o consumo de memória em 50% e acelera o carregamento do mapa em 2 vezes.
Google Maps Platform usa um modelo de pagamento conforme o uso com um limite gratuito mensal de $200 em créditos. Cada API é faturada separadamente: Maps SDK — $2.83 por 1000 carregamentos de mapa, Places API — $4.71 por 1000 solicitações, Directions API — $4.71 por 1000 rotas. Routes API (recomendado) — $5.00 por 1000 solicitações. O limite gratuito de $200 geralmente cobre até 70.000 carregamentos de mapa por mês.
Para projetos de alto tráfego, o Google oferece descontos para volumes de 500.000+ solicitações por mês. Google Maps SDK não é cobrado pela exibição de um mapa básico sem interação — a taxa é apenas para carregamento do mapa. Cada vez que um usuário abre uma tela com um mapa, conta como um carregamento. Otimização: o cache de tiles do mapa reduz o número de carregamentos em aberturas repetidas.
Limites: 300 solicitações por minuto para Places API (pode ser aumentado para 3000 via cota no Cloud Console). Para Directions API — 100 solicitações por minuto. Exceder o limite retorna o erro OVER_QUERY_LIMIT. O Google recomenda usar backoff exponencial para tentativas repetidas. O monitoramento de uso está disponível no Google Cloud Console com até 5 minutos de atraso.
Perguntas frequentes
Google Maps SDK é faturado no modelo de pagamento conforme o uso: $2.83 por 1000 carregamentos de mapa. A cada mês, o Google fornece $200 em créditos gratuitos, que cobrem até 70.000 carregamentos de mapa. Places API e Directions API são faturados separadamente. Para projetos pequenos com até 10.000 usuários, os custos geralmente variam de $10 a $50 por mês.
Sim, o Google Maps SDK suporta mapas offline através de cache de tiles. O SDK armazena automaticamente em cache até 1000 tiles (aproximadamente uma área de 10x10 km). Para suporte offline completo, use o Google Maps Offline API para Android, que permite baixar o mapa de uma região inteira. Mapas offline não suportam trânsito, rotas ou Places API.
Google Maps SDK oferece um conjunto mais amplo de dados: 250 milhões de lugares, trânsito em tempo real, Street View, Indoor Maps. O Apple MapKit é gratuito, mas tem menos dados fora dos EUA e Europa. O Google SDK requer uma chave de API e pagamento, o Apple MapKit não. Para projetos multiplataforma, o Google Maps SDK é preferível com uma única API para ambas as plataformas.
A chave de API é criada no Google Cloud Console na seção APIs and Services, Credentials. Você precisa vincular a chave a uma conta de faturamento para ativá-la, mas o Google fornece $200 em créditos gratuitos mensais. A chave pode ser restrita por IP, referenciador HTTP ou pacote Android/iOS Bundle ID. Não é necessário cartão de crédito para testes.
Sim, o Google Maps SDK suporta clustering através da biblioteca android-maps-utils (Android) e Google-Maps-iOS-Utils (iOS). O ClusterManager agrupa automaticamente marcadores próximos em um cluster com um indicador numérico. Ao aplicar zoom, o cluster se divide em marcadores individuais. O clustering é obrigatório com 200+ marcadores para manter o desempenho do mapa.
Resumo
Vamos desenvolver um aplicativo móvel chave na mão
A IT Sectr cria aplicativos para iOS e Android para startups e empresas desde 2017. Nós vamos aconselhá-lo e propor a melhor solução.
Leia também