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