Memulai
-
Instal paket
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 -
Sinkronkan dengan proyek native
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync
Pengaturan iOS
Section titled âPengaturan iOSâDi iOS, akses kompas memerlukan izin lokasi. Tambahkan berikut ini ke Info.plist Anda:
<key>NSLocationWhenInUseUsageDescription</key><string>We need location permission to access the compass</string>Pengaturan Android
Section titled âPengaturan AndroidâTidak diperlukan pengaturan tambahan. Plugin menggunakan sensor magnetometer dan accelerometer perangkat.
Penggunaan
Section titled âPenggunaanâImpor plugin dan gunakan metodenya untuk membaca arah kompas:
import { CapgoCompass } from '@capgo/capacitor-compass';
// Get current heading onceconst getCurrentHeading = async () => { const { value } = await CapgoCompass.getCurrentHeading(); console.log('Current heading:', value, 'degrees');};
// Start continuous heading updatesconst startCompass = async () => { // Start listening for updates await CapgoCompass.startListening();
// Add listener for heading changes const handle = await CapgoCompass.addListener('headingChange', (event) => { console.log('Heading:', event.value, 'degrees'); });
// Later, to stop listening: // await CapgoCompass.stopListening(); // await handle.remove();};
// Check permissionsconst checkPermission = async () => { const status = await CapgoCompass.checkPermissions(); console.log('Permission status:', status.compass);};
// Request permissionsconst requestPermission = async () => { const status = await CapgoCompass.requestPermissions(); if (status.compass === 'granted') { console.log('Compass access granted'); }};Referensi API
Section titled âReferensi APIâgetCurrentHeading()
Section titled âgetCurrentHeading()âDapatkan arah kompas saat ini dalam derajat.
const result = await CapgoCompass.getCurrentHeading();// Returns: { value: number } - heading in degrees (0-360)startListening()
Section titled âstartListening()âMulai mendengarkan perubahan arah kompas. Harus dipanggil sebelum event arah dipancarkan.
await CapgoCompass.startListening();stopListening()
Section titled âstopListening()âBerhenti mendengarkan perubahan arah kompas.
await CapgoCompass.stopListening();addListener(âheadingChangeâ, callback)
Section titled âaddListener(âheadingChangeâ, callback)âTambahkan listener untuk event perubahan arah.
const handle = await CapgoCompass.addListener('headingChange', (event) => { console.log('Heading:', event.value);});
// Remove listener when doneawait handle.remove();removeAllListeners()
Section titled âremoveAllListeners()âHapus semua listener yang terdaftar.
await CapgoCompass.removeAllListeners();checkPermissions()
Section titled âcheckPermissions()âPeriksa status izin saat ini.
const status = await CapgoCompass.checkPermissions();// Returns: { compass: 'prompt' | 'granted' | 'denied' }requestPermissions()
Section titled ârequestPermissions()âMinta izin untuk mengakses data kompas.
const status = await CapgoCompass.requestPermissions();getPluginVersion()
Section titled âgetPluginVersion()âDapatkan versi plugin native.
const { version } = await CapgoCompass.getPluginVersion();Contoh Lengkap
Section titled âContoh Lengkapâimport { CapgoCompass } from '@capgo/capacitor-compass';
export class CompassService { private listenerHandle: any = null;
async init() { // Check and request permissions const status = await CapgoCompass.checkPermissions(); if (status.compass !== 'granted') { const result = await CapgoCompass.requestPermissions(); if (result.compass !== 'granted') { throw new Error('Compass permission denied'); } } }
async startTracking(onHeadingChange: (heading: number) => void) { // Start listening for updates await CapgoCompass.startListening();
// Add 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]; }}Catatan Platform
Section titled âCatatan Platformâ- Memerlukan iOS 10.0+
- Menggunakan Core Location untuk data arah
- Memerlukan izin lokasi (NSLocationWhenInUseUsageDescription)
- Pembaruan arah berlanjut ketika listening aktif
Android
Section titled âAndroidâ- Memerlukan Android 6.0 (API 23)+
- Menggunakan sensor accelerometer dan magnetometer
- Tidak diperlukan izin khusus untuk sensor kompas
- Arah dihitung dari fusi sensor
- Tidak didukung di platform web
- Metode akan melempar error saat dipanggil