Multi-app support
Google Maps, Apple Maps, Waze, Citymapper and more πΊοΈ
The Capacitor Launch Navigator plugin enables launching native navigation apps on iOS and Android devices with coordinate-based navigation. This plugin provides seamless integration with popular mapping applications and supports multiple transportation modes for comprehensive navigation solutions.
Multi-app support
Google Maps, Apple Maps, Waze, Citymapper and more πΊοΈ
Transport modes
Driving, walking, transit, and cycling directions π§
App detection
Check availability and list installed navigation apps π
Coordinate-based
Navigate using latitude/longitude coordinates π
npm install @capgo/capacitor-launch-navigatornpx cap sync
Add URL schemes to your Info.plist
to detect installed navigation apps:
<key>LSApplicationQueriesSchemes</key><array> <string>googlemaps</string> <string>waze</string> <string>citymapper</string> <!-- Add other navigation app schemes --></array>
navigate(options)
- Launch navigation to specified coordinatesisAppAvailable(options)
- Check if a specific navigation app is installedgetAvailableApps()
- List all available navigation apps on devicegetSupportedApps()
- Get all supported apps for current platformimport { LaunchNavigator, TransportMode } from '@capgo/capacitor-launch-navigator';
// Basic navigation to coordinatesawait LaunchNavigator.navigate({ destination: [37.7749, -122.4194], // San Francisco coordinates});
// Advanced navigation with optionsawait LaunchNavigator.navigate({ destination: [37.7749, -122.4194], options: { start: [37.7849, -122.4094], // Optional starting point transportMode: TransportMode.DRIVING, app: 'google_maps', // Preferred navigation app appDisplayName: 'Google Maps' }});
// Check if specific app is availableconst result = await LaunchNavigator.isAppAvailable({ app: 'google_maps'});
if (result.available) { console.log('Google Maps is installed');} else { console.log('Google Maps is not available');}
// Get all available navigation appsconst availableApps = await LaunchNavigator.getAvailableApps();console.log('Available navigation apps:', availableApps);
// Get all supported apps for platformconst supportedApps = await LaunchNavigator.getSupportedApps();console.log('Supported apps:', supportedApps);
interface NavigationOptions { start?: [number, number]; // Starting coordinates [lat, lng] transportMode?: TransportMode; // Transportation method app?: string; // Preferred navigation app appDisplayName?: string; // Display name for app launchMode?: LaunchMode; // How to launch the app}
enum TransportMode { DRIVING = 'driving', WALKING = 'walking', TRANSIT = 'transit', CYCLING = 'cycling'}
β οΈ Important: This plugin only accepts latitude/longitude coordinates for navigation. Use @capgo/capacitor-nativegeocoder to convert addresses to coordinates.
// Example with geocodingimport { NativeGeocoder } from '@capgo/capacitor-nativegeocoder';
// Convert address to coordinatesconst geocodeResult = await NativeGeocoder.forwardGeocode({ address: '1600 Amphitheatre Parkway, Mountain View, CA'});
if (geocodeResult.results.length > 0) { const coords = geocodeResult.results[0];
// Launch navigation with geocoded coordinates await LaunchNavigator.navigate({ destination: [coords.latitude, coords.longitude] });}
// Check multiple apps and use the first availableconst 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 supported navigation apps found');}
try { await LaunchNavigator.navigate({ destination: [37.7749, -122.4194], options: { app: 'google_maps', transportMode: TransportMode.DRIVING } });} catch (error) { console.error('Navigation failed:', error); // Handle error - app not available, invalid coordinates, etc.}
Check the complete documentation for detailed implementation guides and advanced navigation patterns.