Home Mobile Menggabungkan Flutter Geolocator dan Geocoding untuk Aplikasi Lokasi yang Lebih Interaktif

Menggabungkan Flutter Geolocator dan Geocoding untuk Aplikasi Lokasi yang Lebih Interaktif

0

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:

  1. Mendapatkan koordinat geografis (latitude dan longitude) pengguna.
  2. Memantau perubahan lokasi pengguna secara real-time.
  3. Mendapatkan kecepatan dan ketinggian pengguna.
  4. 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:

  1. Mendapatkan alamat berdasarkan koordinat geografis.
  2. 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),
                    ),
                  )
          ],
        ),
      ),
    );
  }
}
Dan begini lah hasilnya :