📍 P09: PokeMap (Ginásios na Cidade)
O mundo é o seu tabuleiro! Neste projeto, você aprenderá a usar o GPS do celular e o Google Maps para mostrar onde estão os “Ginásios Pokémon” na sua cidade real.
🎯 Objetivo do Projeto
Exibir um mapa interativo com marcadores (pins) em locais específicos (Latitude e Longitude). O app deve mostrar a posição atual do jogador e permitir que ele clique em um “Ginásio” no mapa para ver informações sobre a batalha.
📖 Dicionário do Projeto
-
Google Maps SDK: A ferramenta oficial do Google para colocar mapas dentro de apps.
-
LatLng: É o conjunto de Latitude e Longitude (as coordenadas matemáticas de um lugar).
-
Location Services: O sistema do Android que conversa com os satélites para saber onde você está.
-
API Key: Uma “senha mestre” que você gera no Google Cloud para que o mapa funcione.
🏗️ Passo a Passo (Wizard do Android Studio)
-
Template: Empty Compose Activity.
-
Name:
AppPokeMap_SeuNome. -
Package Name:
br.com.curso.pokemap.
🎨 Parte 1: Configurando o Manifesto
Você precisará de permissões de localização e da tag de API Key:
<!-- Permissões -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- Dentro da tag <application> -->
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="SUA_API_KEY_AQUI" />⚙️ Parte 2: Colocando Marcadores (Pins)
No Compose, usamos a biblioteca maps-compose. Veja como é simples colocar um ponto no mapa:
@Composable
fun MapaDeGinasios() {
val saoPaulo = LatLng(-23.5505, -46.6333)
val cameraPositionState = rememberCameraPositionState {
position = CameraPosition.fromLatLngZoom(saoPaulo, 12f)
}
GoogleMap(
modifier = Modifier.fillMaxSize(),
cameraPositionState = cameraPositionState
) {
// Marcador do Ginásio
Marker(
state = MarkerState(position = saoPaulo),
title = "Ginásio do Ibirapuera",
snippet = "Chefe: Brock | Nível: 10"
)
}
}✅ Gabarito Comentado (Pegando Localização)
Para saber onde o jogador está e ativar o ponto azul no mapa:
GoogleMap(
modifier = Modifier.fillMaxSize(),
properties = MapProperties(isMyLocationEnabled = true), // Ativa ponto azul
uiSettings = MapUiSettings(myLocationButtonEnabled = true) // Ativa botão de focar
)📂 Organização de Pastas
br.com.curso.pokemap → MainActivity.kt (Contém a UI e a lógica do mapa).
??? Requisitos de Configuração e Solução de Problemas
Se você encontrar erros ao tentar rodar este projeto, verifique os pontos abaixo:
1. Suporte ao AndroidX
O arquivo gradle.properties na raiz do projeto deve conter:
android.useAndroidX=true
android.enableJetifier=true
org.gradle.jvmargs=-Xmx2048m
2. Dependências do Google Maps
Certifique-se de adicionar as dependências no build.gradle:
com.google.maps.android:maps-composecom.google.android.gms:play-services-mapscom.google.android.gms:play-services-location