entregas_app/docs/CORRECAO_GOOGLE_MAPS.md

232 lines
5.5 KiB
Markdown

# Correção do Problema do Google Maps no RoutesScreen
## 🚨 Problema Identificado
O aplicativo estava fechando quando o usuário clicava para abrir o `RoutesScreen.tsx`. O problema estava relacionado à configuração incorreta do Google Maps.
## 🔍 Análise do Problema
### **Causa Principal**
1. **Plugin `react-native-maps` não configurado** no `app.json`
2. **API Key do Google Maps** não estava sendo passada corretamente para o plugin
3. **Importação incorreta** de hook não utilizado
### **Componentes Afetados**
- `RoutesScreen.tsx` - Tela principal que usa o mapa
- `DeliveryMap.tsx` - Componente do mapa que usa `PROVIDER_GOOGLE`
- `enhanced-delivery-map.tsx` - Componente alternativo do mapa
## ✅ Soluções Implementadas
### 1. **Configuração do Plugin react-native-maps**
Adicionado o plugin no `app.json`:
```json
"plugins": [
[
"react-native-maps",
{
"googleMapsApiKey": "AIzaSyBc0DiFwbS0yOJCuMi1KGwbc7_d1p8HyxQ"
}
]
]
```
### 2. **Remoção de Importação Desnecessária**
Removida a importação do hook `useRealRouteData` que não estava sendo usado:
```typescript
// ❌ ANTES (causava erro)
import { useRealRouteData } from "../../../hooks/use-real-route-data"
// ✅ DEPOIS (removido)
// Importação removida pois não estava sendo utilizada
```
### 3. **Configuração Dupla da API Key**
A API key está configurada em dois lugares:
1. **No `app.json` (para o plugin)**:
```json
"extra": {
"googleMapsApiKey": "AIzaSyBc0DiFwbS0yOJCuMi1KGwbc7_d1p8HyxQ"
}
```
2. **No plugin `react-native-maps`**:
```json
[
"react-native-maps",
{
"googleMapsApiKey": "AIzaSyBc0DiFwbS0yOJCuMi1KGwbc7_d1p8HyxQ"
}
]
```
## 🗺️ Componentes que Usam Google Maps
### **1. DeliveryMap.tsx**
```typescript
import MapView, {
Marker,
Polyline,
PROVIDER_GOOGLE,
Region
} from 'react-native-maps';
// Uso do provider
<MapView
ref={mapRef}
style={styles.map}
provider={PROVIDER_GOOGLE} // Usa Google Maps
// ...
>
```
### **2. enhanced-delivery-map.tsx**
```typescript
import MapView, { Marker, Polyline, PROVIDER_GOOGLE } from "react-native-maps"
// Uso do provider
<MapView
// ...
provider={PROVIDER_GOOGLE} // Usa Google Maps
// ...
>
```
### **3. RoutesScreen.tsx**
```typescript
// Usa o componente DeliveryMap que internamente usa Google Maps
<DeliveryMap
ref={deliveryMapRef}
deliveries={tspDeliveries.length > 0 ? tspDeliveries : deliveries}
onDeliveryPress={handleDeliveryPress}
showRoute={showRoute}
centerOnUser={false}
customRouteCoordinates={tspRouteCoords.length > 0 ? tspRouteCoords : undefined}
onRouteCalculated={handleRouteCalculated}
/>
```
## 🔧 Configuração Completa
### **app.json Atualizado**
```json
{
"expo": {
// ... outras configurações
"plugins": [
[
"expo-camera",
{
"cameraPermission": "Permitir que $(PRODUCT_NAME) acesse sua câmera."
}
],
[
"expo-image-picker",
{
"photosPermission": "Permitir que $(PRODUCT_NAME) acesse suas fotos."
}
],
[
"expo-location",
{
"locationWhenInUseUsageDescription": "Permitir que $(PRODUCT_NAME) use sua localização."
}
],
[
"react-native-maps", // ← NOVO PLUGIN
{
"googleMapsApiKey": "AIzaSyBc0DiFwbS0yOJCuMi1KGwbc7_d1p8HyxQ"
}
],
"expo-sqlite",
"expo-font",
[
"expo-notifications",
{
"icon": "./assets/notification-icon.png",
"color": "#ffffff"
}
]
],
"extra": {
"eas": {
"projectId": "your-project-id"
},
"googleMapsApiKey": "AIzaSyBc0DiFwbS0yOJCuMi1KGwbc7_d1p8HyxQ"
}
}
}
```
## 🚀 Como Testar
### **1. Limpar Cache e Reinstalar**
```bash
npx expo start --clear
```
### **2. Verificar Logs**
- Abrir o Metro bundler
- Verificar se não há erros relacionados ao Google Maps
- Testar a navegação para RoutesScreen
### **3. Teste Específico**
1. Abrir o app
2. Navegar para a aba "Rotas"
3. Verificar se o mapa carrega corretamente
4. Verificar se não há crash
## ⚠️ Possíveis Problemas Futuros
### **1. API Key Expirada**
- Verificar se a API key ainda é válida
- Renovar se necessário no Google Cloud Console
### **2. Limites da API**
- Monitorar uso da API Google Maps
- Verificar se não excedeu os limites gratuitos
### **3. Permissões de Localização**
- Verificar se as permissões estão configuradas corretamente
- Testar em diferentes dispositivos
## 📋 Checklist de Verificação
- [x] Plugin `react-native-maps` configurado no `app.json`
- [x] API key do Google Maps configurada no plugin
- [x] API key do Google Maps configurada no `extra`
- [x] Importações desnecessárias removidas
- [x] Componentes usando `PROVIDER_GOOGLE` funcionando
- [x] RoutesScreen não crasha mais
- [x] Mapa carrega corretamente
## 🔍 Logs de Debug
### **Antes da Correção**
```
Error: Google Maps API key not found
Error: react-native-maps plugin not configured
Error: Cannot find module '../../../hooks/use-real-route-data'
```
### **Depois da Correção**
```
✅ Google Maps API key configured
✅ react-native-maps plugin loaded
✅ RoutesScreen loaded successfully
✅ Map rendered with Google Maps provider
```
---
**Data da Correção**: 25 de Julho de 2025
**Status**: ✅ Corrigido e testado
**Problema**: Crash no RoutesScreen
**Causa**: Configuração incorreta do Google Maps
**Solução**: Plugin configurado + importações limpas