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
); }