Dalam era teknologi yang semakin maju, penggunaan teknologi lokasi dalam aplikasi semakin populer. Penggunaan teknologi lokasi memungkinkan pengembang untuk menyediakan fitur-fitur menarik seperti penentuan lokasi pengguna, pencarian tempat, rute perjalanan, dan banyak lagi. Dalam artikel ini, kita akan membahas tentang dua paket Flutter yang sangat populer untuk mengakses lokasi dan geocoding dalam aplikasi, yaitu geolocator dan geocoding.
Apa itu Geolocator?
Geolocator adalah paket Flutter yang digunakan untuk mengakses data lokasi pengguna melalui berbagai sumber seperti GPS, jaringan seluler, atau IP WiFi. Paket ini menyediakan metode yang mudah digunakan untuk mendapatkan koordinat geografis, kecepatan, ketinggian, dan akurasi lokasi.
Dengan geolocator, kita dapat melakukan berbagai tugas, seperti:
- Mendapatkan koordinat geografis (latitude dan longitude) pengguna.
- Memantau perubahan lokasi pengguna secara real-time.
- Mendapatkan kecepatan dan ketinggian pengguna.
- Mengetahui apakah layanan lokasi (GPS) aktif atau tidak.
Apa itu Geocoding?
Geocoding adalah proses mengonversi alamat atau nama tempat menjadi koordinat geografis (latitude dan longitude) yang dapat digunakan dalam peta dan aplikasi berbasis lokasi lainnya. Paket geocoding dalam Flutter memungkinkan kita untuk mencari alamat berdasarkan koordinat atau sebaliknya.
Dengan geocoding, kita dapat melakukan beberapa tugas berikut:
- Mendapatkan alamat berdasarkan koordinat geografis.
- Mendapatkan koordinat geografis berdasarkan alamat atau nama tempat.
Menggabungkan Geolocator dan Geocoding dalam Aplikasi Flutter
Langkah pertama adalah menambahkan kedua paket ke file pubspec.yaml Anda:
| dependencies: flutter: sdk: flutter geolocator: ^7.0.1 geocoding: ^2.0.0 |
Setelah itu, jalankan
flutter pub get untuk mengunduh dan memasang paket-paket tersebut.Contoh Penggunaan
Berikut adalah contoh penggunaan
geolocator dan geocoding dalam aplikasi Flutter sederhana untuk mendapatkan lokasi pengguna dan alamat berdasarkan koordinat:| class ArtikelPage13 extends StatefulWidget { const ArtikelPage13({super.key}); @override State<ArtikelPage13> createState() => _ArtikelPage13State(); } class _ArtikelPage13State extends State<ArtikelPage13> { String latitude = “”; String longitude = “”; String alamat = “”; bool loading = true; @override void initState() { super.initState(); _getLocation(); } Future<void> _getLocation() async { setState(() { loading = true; }); try { Position position = await Geolocator.getCurrentPosition( desiredAccuracy: LocationAccuracy.high); List<Placemark> placemarks = await placemarkFromCoordinates(position.latitude, position.longitude); setState(() { loading = false; latitude = “${position.latitude}”; longitude = “${position.longitude}”; alamat += “${placemarks[0].name}, ${placemarks[0].locality}, ${placemarks[0].administrativeArea}, ${placemarks[0].country}”; }); } catch (e) { setState(() { alamat = “Tidak dapat mengakses lokasi: $e”; }); } } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text( “Geolocator dan gecoding”, style: TextStyle( fontSize: 18.0, ), ), centerTitle: true, ), body: Container( width: MediaQuery.of(context).size.width, child: Column( mainAxisAlignment: MainAxisAlignment.center, crossAxisAlignment: CrossAxisAlignment.start, children: [ loading ? Center( child: CircularProgressIndicator(), ) : ListTile( title: Text( “$alamat”, style: TextStyle( fontSize: 18.0, overflow: TextOverflow.ellipsis), ), subtitle: Text( “Latitude : $latitude, Longitude : $longitude “, style: TextStyle( fontSize: 14.0, overflow: TextOverflow.ellipsis), ), ) ], ), ), ); } } |
