import React, { useState } from 'react';
import { RouteMap } from '../ui/route-map';
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '../ui/card';
import { Badge } from '../ui/badge';
import { Button } from '../ui/button';
import { Tabs, TabsContent, TabsList, TabsTrigger } from '../ui/tabs';
import { Navigation, Car, PersonStanding, Bike, Clock, MapPin } from 'lucide-react';
/**
* RouteMapExamples - Exemplos práticos de mapas com rotas
*
* Demonstra diferentes casos de uso para o componente RouteMap:
* - Rotas de entrega
* - Rotas turísticas
* - Diferentes modos de transporte
* - Rotas com múltiplos waypoints
*/
// 1. Rota de Entrega Simples
export function DeliveryRouteMap() {
const [routeInfo, setRouteInfo] = useState<{ distance: string; duration: string } | null>(null);
const origin = { lat: -23.5505, lng: -46.6333 }; // Avenida Paulista
const destination = { lat: -23.5613, lng: -46.6563 }; // Parque Ibirapuera
return (
Rota de Entrega
Calcule o tempo e distância para sua entrega
{
setRouteInfo({ distance, duration });
}}
/>
{routeInfo && (
Distância
{routeInfo.distance}
Tempo
{routeInfo.duration}
)}
);
}
// 2. Rota Turística com Múltiplos Pontos
export function TouristRouteMap() {
const [routeInfo, setRouteInfo] = useState<{ distance: string; duration: string } | null>(null);
const route = {
origin: { lat: -23.5505, lng: -46.6333 }, // Av. Paulista
destination: { lat: -23.5475, lng: -46.6361 }, // MASP
waypoints: [
{ lat: -23.5558, lng: -46.6396 }, // Parque Trianon
{ lat: -23.5506, lng: -46.6378 }, // Casa das Rosas
],
};
return (
Rota Turística - Avenida Paulista
Roteiro a pé pelos principais pontos turísticos
{
setRouteInfo({ distance, duration });
}}
/>
Pontos da Rota:
A
Início - Avenida Paulista
C
Parque Trianon
D
Casa das Rosas
B
Fim - MASP
{routeInfo && (
Caminhada: {routeInfo.distance} em {routeInfo.duration}
)}
);
}
// 3. Comparação de Modos de Transporte
export function TransportModeComparison() {
const [selectedMode, setSelectedMode] = useState<'DRIVING' | 'WALKING' | 'BICYCLING'>('DRIVING');
const [routeInfo, setRouteInfo] = useState<{ distance: string; duration: string } | null>(null);
const origin = { lat: -23.5505, lng: -46.6333 };
const destination = { lat: -23.5613, lng: -46.6563 };
const modes = [
{ value: 'DRIVING' as const, label: 'Carro', icon: Car, color: 'blue' },
{ value: 'WALKING' as const, label: 'A Pé', icon: PersonStanding, color: 'green' },
{ value: 'BICYCLING' as const, label: 'Bicicleta', icon: Bike, color: 'orange' },
];
return (
Comparação de Transportes
Veja o tempo e distância para cada modo de transporte
{modes.map(mode => {
const Icon = mode.icon;
return (
);
})}
{
setRouteInfo({ distance, duration });
}}
/>
{routeInfo && (
{routeInfo.distance}
Distância total
{routeInfo.duration}
Tempo estimado
)}
);
}
// 4. Rota de Entrega com Múltiplas Paradas
export function MultiStopDeliveryRoute() {
const [routeInfo, setRouteInfo] = useState<{ distance: string; duration: string } | null>(null);
const deliveryRoute = {
origin: { lat: -23.5505, lng: -46.6333 }, // Base
destination: { lat: -23.5505, lng: -46.6333 }, // Retorno à base
waypoints: [
{ lat: -23.5558, lng: -46.65 }, // Cliente 1
{ lat: -23.5475, lng: -46.6361 }, // Cliente 2
{ lat: -23.5613, lng: -46.6563 }, // Cliente 3
],
};
return (
Rota de Entrega - Múltiplas Paradas
Otimize sua rota de entregas com paradas intermediárias
{deliveryRoute.waypoints.length} paradas
{
setRouteInfo({ distance, duration });
}}
/>
Base Central → 3 entregas → Retorno
{routeInfo && (
Distância Total
{routeInfo.distance}
Tempo Total
{routeInfo.duration}
)}
);
}
// 5. Showcase Completo com Tabs
export function RouteMapShowcase() {
return (
Route Maps
Exemplos de mapas com rotas calculadas automaticamente usando Google Maps Directions API
Entrega
Turismo
Comparação
Multi-paradas
);
}