Comenzando
Instalación
Section titled “Instalación”npm install @capgo/capacitor-launch-navigatornpx cap syncyarn add @capgo/capacitor-launch-navigatornpx cap syncpnpm add @capgo/capacitor-launch-navigatornpx cap syncbun add @capgo/capacitor-launch-navigatornpx cap syncConfiguración de Plataforma
Section titled “Configuración de Plataforma”Agrega esquemas de URL a tu Info.plist para detectar aplicaciones de navegación instaladas:
<key>LSApplicationQueriesSchemes</key><array> <string>googlemaps</string> <string>waze</string> <string>citymapper</string> <string>transit</string> <string>moovit</string> <string>uber</string> <string>lyft</string></array>Android
Section titled “Android”No se requiere configuración adicional. El plugin detectará automáticamente las aplicaciones de navegación instaladas.
Ejemplo de Uso
Section titled “Ejemplo de Uso”import { LaunchNavigator, TransportMode } from '@capgo/capacitor-launch-navigator';
// Navegación básica a coordenadasawait LaunchNavigator.navigate({ destination: [37.7749, -122.4194], // Coordenadas de San Francisco});
// Navegación avanzada con opcionesawait LaunchNavigator.navigate({ destination: [37.7749, -122.4194], options: { start: [37.7849, -122.4094], // Punto de inicio opcional transportMode: TransportMode.DRIVING, app: 'google_maps', // Aplicación de navegación preferida appDisplayName: 'Google Maps' }});
// Verificar si una aplicación específica está disponibleconst result = await LaunchNavigator.isAppAvailable({ app: 'google_maps'});
if (result.available) { console.log('Google Maps está instalado');} else { console.log('Google Maps no está disponible');}
// Obtener todas las aplicaciones de navegación disponiblesconst availableApps = await LaunchNavigator.getAvailableApps();console.log('Aplicaciones de navegación disponibles:', availableApps);
// Obtener todas las aplicaciones soportadas para la plataformaconst supportedApps = await LaunchNavigator.getSupportedApps();console.log('Aplicaciones soportadas:', supportedApps);Referencia de la API
Section titled “Referencia de la API”navigate(options)
Section titled “navigate(options)”navigate(options: NavigateOptions) => Promise<void>Inicia la navegación a coordenadas especificadas.
| Param | Type |
|---|---|
options | NavigateOptions |
isAppAvailable(options)
Section titled “isAppAvailable(options)”isAppAvailable(options: { app: string }) => Promise<{ available: boolean }>Verifica si una aplicación de navegación específica está instalada.
| Param | Type |
|---|---|
options | { app: string } |
Retorna: Promise<{ available: boolean }>
getAvailableApps()
Section titled “getAvailableApps()”getAvailableApps() => Promise<{ apps: string[] }>Obtiene la lista de todas las aplicaciones de navegación disponibles en el dispositivo.
Retorna: Promise<{ apps: string[] }>
getSupportedApps()
Section titled “getSupportedApps()”getSupportedApps() => Promise<{ apps: string[] }>Obtiene la lista de todas las aplicaciones soportadas para la plataforma actual.
Retorna: Promise<{ apps: string[] }>
Interfaces
Section titled “Interfaces”NavigateOptions
Section titled “NavigateOptions”| Prop | Type | Description |
|---|---|---|
destination | [number, number] | Coordenadas de destino [lat, lng] |
options | NavigationOptions | Opciones de navegación adicionales (opcional) |
NavigationOptions
Section titled “NavigationOptions”| Prop | Type | Description |
|---|---|---|
start | [number, number] | Coordenadas de inicio [lat, lng] (opcional) |
transportMode | TransportMode | Método de transporte (opcional) |
app | string | Aplicación de navegación preferida (opcional) |
appDisplayName | string | Nombre para mostrar de la app (opcional) |
TransportMode
Section titled “TransportMode”enum TransportMode { DRIVING = 'driving', WALKING = 'walking', TRANSIT = 'transit', CYCLING = 'cycling'}Requisito de Coordenadas
Section titled “Requisito de Coordenadas”Importante: Este plugin solo acepta coordenadas de latitud/longitud para navegación. Usa @capgo/capacitor-nativegeocoder para convertir direcciones a coordenadas.
import { NativeGeocoder } from '@capgo/capacitor-nativegeocoder';import { LaunchNavigator } from '@capgo/capacitor-launch-navigator';
// Convertir dirección a coordenadasconst geocodeResult = await NativeGeocoder.forwardGeocode({ address: '1600 Amphitheatre Parkway, Mountain View, CA'});
if (geocodeResult.results.length > 0) { const coords = geocodeResult.results[0];
// Iniciar navegación con coordenadas geocodificadas await LaunchNavigator.navigate({ destination: [coords.latitude, coords.longitude] });}Aplicaciones de Navegación Soportadas
Section titled “Aplicaciones de Navegación Soportadas”- Apple Maps (integrado)
- Google Maps
- Waze
- Citymapper
- Transit
- Moovit
- Uber
- Lyft
- Y muchas más…
Android
Section titled “Android”- Google Maps (integrado)
- Waze
- Citymapper
- HERE WeGo
- Sygic
- MapQuest
- Moovit
- Y muchas más…
Ejemplos Avanzados
Section titled “Ejemplos Avanzados”Verificar Múltiples Apps y Usar la Primera Disponible
Section titled “Verificar Múltiples Apps y Usar la Primera Disponible”const appsToCheck = ['google_maps', 'waze', 'apple_maps'];let selectedApp = null;
for (const app of appsToCheck) { const result = await LaunchNavigator.isAppAvailable({ app }); if (result.available) { selectedApp = app; break; }}
if (selectedApp) { await LaunchNavigator.navigate({ destination: [37.7749, -122.4194], options: { app: selectedApp } });} else { console.log('No se encontraron aplicaciones de navegación soportadas');}Selección de Usuario de Aplicación de Navegación
Section titled “Selección de Usuario de Aplicación de Navegación”// Obtener aplicaciones disponiblesconst { apps } = await LaunchNavigator.getAvailableApps();
if (apps.length === 0) { alert('No hay aplicaciones de navegación disponibles'); return;}
// Mostrar selección de aplicación al usuario (pseudo-código)const selectedApp = await showAppSelectionDialog(apps);
// Navegar con aplicación seleccionadaawait LaunchNavigator.navigate({ destination: [37.7749, -122.4194], options: { app: selectedApp }});Navegación con Diferentes Modos de Transporte
Section titled “Navegación con Diferentes Modos de Transporte”// Direcciones en cocheawait LaunchNavigator.navigate({ destination: [37.7749, -122.4194], options: { transportMode: TransportMode.DRIVING }});
// Direcciones a pieawait LaunchNavigator.navigate({ destination: [37.7749, -122.4194], options: { transportMode: TransportMode.WALKING }});
// Direcciones en transporte públicoawait LaunchNavigator.navigate({ destination: [37.7749, -122.4194], options: { transportMode: TransportMode.TRANSIT }});Mejores Prácticas
Section titled “Mejores Prácticas”- Siempre verifica la disponibilidad de la app antes de intentar navegar
- Proporciona opciones de respaldo cuando las apps preferidas no estén disponibles
- Usa nombres de visualización significativos para selección del usuario
- Maneja errores con gracia con mensajes amigables para el usuario
- Considera las preferencias del usuario para aplicaciones de navegación predeterminadas
- Prueba en dispositivos iOS y Android
- Implementa manejo de errores apropiado para coordenadas inválidas
Manejo de Errores
Section titled “Manejo de Errores”try { await LaunchNavigator.navigate({ destination: [37.7749, -122.4194], options: { app: 'google_maps', transportMode: TransportMode.DRIVING } });} catch (error) { console.error('La navegación falló:', error); // Manejar error - app no disponible, coordenadas inválidas, etc. alert('No se pudo iniciar la navegación. Por favor verifica tus coordenadas e intenta nuevamente.');}Casos de Uso
Section titled “Casos de Uso”- Servicios basados en ubicación: Navegar usuarios a puntos de interés
- Apps de entrega: Guiar conductores a ubicaciones de entrega
- Apps de eventos: Dirigir asistentes a ubicaciones de lugares
- Apps inmobiliarias: Navegar a ubicaciones de propiedades
- Apps de viaje: Guiar turistas a atracciones
- Apps de servicio: Dirigir trabajadores de campo a sitios de trabajo