Iniziare
-
Installa il pacchetto
Terminal window npm i @capgo/capacitor-compassTerminal window pnpm add @capgo/capacitor-compassTerminal window yarn add @capgo/capacitor-compassTerminal window bun add @capgo/capacitor-compass -
Sincronizza con i progetti nativi
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync
Configurazione iOS
Section titled “Configurazione iOS”Su iOS, l’accesso alla bussola richiede il permesso di posizione. Aggiungi quanto segue al tuo Info.plist:
<key>NSLocationWhenInUseUsageDescription</key><string>Abbiamo bisogno del permesso di posizione per accedere alla bussola</string>Configurazione Android
Section titled “Configurazione Android”Non è richiesta alcuna configurazione aggiuntiva. Il plugin usa i sensori magnetometro e accelerometro del dispositivo.
Utilizzo
Section titled “Utilizzo”Importa il plugin e usa i suoi metodi per leggere la direzione della bussola:
import { CapgoCompass } from '@capgo/capacitor-compass';
// Ottieni la direzione corrente una voltaconst getCurrentHeading = async () => { const { value } = await CapgoCompass.getCurrentHeading(); console.log('Direzione corrente:', value, 'gradi');};
// Avvia aggiornamenti continui della direzioneconst startCompass = async () => { // Inizia ad ascoltare gli aggiornamenti await CapgoCompass.startListening();
// Aggiungi listener per cambiamenti di direzione const handle = await CapgoCompass.addListener('headingChange', (event) => { console.log('Direzione:', event.value, 'gradi'); });
// Più tardi, per fermare l'ascolto: // await CapgoCompass.stopListening(); // await handle.remove();};
// Controlla permessiconst checkPermission = async () => { const status = await CapgoCompass.checkPermissions(); console.log('Stato permesso:', status.compass);};
// Richiedi permessiconst requestPermission = async () => { const status = await CapgoCompass.requestPermissions(); if (status.compass === 'granted') { console.log('Accesso bussola concesso'); }};Riferimento API
Section titled “Riferimento API”getCurrentHeading()
Section titled “getCurrentHeading()”Ottieni la direzione corrente della bussola in gradi.
const result = await CapgoCompass.getCurrentHeading();// Ritorna: { value: number } - direzione in gradi (0-360)startListening()
Section titled “startListening()”Inizia ad ascoltare i cambiamenti di direzione della bussola. Deve essere chiamato prima che vengano emessi eventi di direzione.
await CapgoCompass.startListening();stopListening()
Section titled “stopListening()”Ferma l’ascolto dei cambiamenti di direzione della bussola.
await CapgoCompass.stopListening();addListener(‘headingChange’, callback)
Section titled “addListener(‘headingChange’, callback)”Aggiungi un listener per gli eventi di cambio direzione.
const handle = await CapgoCompass.addListener('headingChange', (event) => { console.log('Direzione:', event.value);});
// Rimuovi listener quando finitoawait handle.remove();removeAllListeners()
Section titled “removeAllListeners()”Rimuovi tutti i listener registrati.
await CapgoCompass.removeAllListeners();checkPermissions()
Section titled “checkPermissions()”Controlla lo stato corrente dei permessi.
const status = await CapgoCompass.checkPermissions();// Ritorna: { compass: 'prompt' | 'granted' | 'denied' }requestPermissions()
Section titled “requestPermissions()”Richiedi il permesso per accedere ai dati della bussola.
const status = await CapgoCompass.requestPermissions();getPluginVersion()
Section titled “getPluginVersion()”Ottieni la versione del plugin nativo.
const { version } = await CapgoCompass.getPluginVersion();Esempio Completo
Section titled “Esempio Completo”import { CapgoCompass } from '@capgo/capacitor-compass';
export class CompassService { private listenerHandle: any = null;
async init() { // Controlla e richiedi permessi const status = await CapgoCompass.checkPermissions(); if (status.compass !== 'granted') { const result = await CapgoCompass.requestPermissions(); if (result.compass !== 'granted') { throw new Error('Permesso bussola negato'); } } }
async startTracking(onHeadingChange: (heading: number) => void) { // Inizia ad ascoltare gli aggiornamenti await CapgoCompass.startListening();
// Aggiungi event listener this.listenerHandle = await CapgoCompass.addListener( 'headingChange', (event) => { onHeadingChange(event.value); } ); }
async stopTracking() { if (this.listenerHandle) { await this.listenerHandle.remove(); this.listenerHandle = null; } await CapgoCompass.stopListening(); }
async getHeading(): Promise<number> { const { value } = await CapgoCompass.getCurrentHeading(); return value; }
getCardinalDirection(heading: number): string { const directions = ['N', 'NE', 'E', 'SE', 'S', 'SW', 'W', 'NW']; const index = Math.round(heading / 45) % 8; return directions[index]; }}Note Piattaforma
Section titled “Note Piattaforma”- Richiede iOS 10.0+
- Usa Core Location per i dati di direzione
- Richiede permesso di posizione (NSLocationWhenInUseUsageDescription)
- Gli aggiornamenti di direzione sono continui quando l’ascolto è attivo
Android
Section titled “Android”- Richiede Android 6.0 (API 23)+
- Usa sensori accelerometro e magnetometro
- Nessun permesso speciale richiesto per i sensori bussola
- La direzione viene calcolata dalla fusione dei sensori
- Non supportato sulla piattaforma web
- I metodi genereranno errori quando chiamati