Kamis, 27 Oktober 2022

FLUTTER-geolokasi

 

Tutorial Flutter – Membuat Aplikasi Android Menggunakan Geolocator Dan Geocoding

Hai semuanya pada artikel kali ini kita akan mempelajari tentang geolocator untuk mendapatkan longitude dan latitude, serta kita akan mencoba mendapatkan alamat dari longitude dan latitudenya. Untuk mendapatkan alamat dari longitude dan latitude kita akan menggunakan plugin Geocoding.

Project Baru Flutter

membuat project baru pada flutter bisa menggunakan terminal atau visual studio code

flutter create fluttergeo

Tambahkan Dependency yang diperlukan Pada File pubspec.yaml

geolocator: ^9.0.0 
geocoding: ^2.0.4

Setting Permission Pada Flutter

Kita perlu menambahkan permission di dalam android/app/src/main/AndroidManifest.xml.

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />

Mendapatkan Latitude Dan Longitude

Untuk mendapatkan latitude dan longitude terapkan code di bawah ini :

String location = 'Belum Mendapatkan Lat dan long, Silahkan tekan button';
String address = 'Mencari lokasi...';
//getLongLAT
Future<Position> _getGeoLocationPosition() async {
bool serviceEnabled;
LocationPermission permission;
serviceEnabled = await Geolocator.isLocationServiceEnabled();
//location service not enabled, don't continue
if (!serviceEnabled) {
await Geolocator.openLocationSettings();
return Future.error('Location service Not Enabled');
}
permission = await Geolocator.checkPermission();
if (permission == LocationPermission.denied) {
permission = await Geolocator.requestPermission();
if (permission == LocationPermission.denied) {
return Future.error('Location permission denied');
}
}
//permission denied forever
if (permission == LocationPermission.deniedForever) {
return Future.error(
'Location permission denied forever, we cannot access',
);
}
//continue accessing the position of device
return await Geolocator.getCurrentPosition(
desiredAccuracy: LocationAccuracy.high,
);
}

Menambahkan Ui Geolocator Pada Flutter

Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'Koordinat Point',
              style: TextStyle(
                fontSize: 22.0,
                fontWeight: FontWeight.bold,
              ),
            ),
            SizedBox(
              height: 10.0,
            ),
            Text(
              location,
              style: TextStyle(
                fontSize: 12.0,
                fontWeight: FontWeight.bold,
              ),
            ),
            
            ElevatedButton(
              onPressed: () async {
                Position position = await _getGeoLocationPosition();
                setState(() {
                  location = '${position.latitude}, ${position.longitude}';
                });
               
              },
              child: const Text('Get Koordinat'),
            ),
          ],
        ),
      ),

Output Latitude Dan Longitude

WhatsApp Image 2022 07 04 at 08.33.27
Hasil pertama

lalu kita klik izinkan untuk mengaktifkan GPS

WhatsApp Image 2022 07 04 at 08.34.23
hasil kedua
WhatsApp Image 2022 07 04 at 08.34.02
output latitude dan longitude

Get Alamat

Untuk mendapatkan alamat dari latitude dan longitude yang telah di hasilkan, tambahkan code di bawah ini :

Future<void> getAddressFromLongLat(Position position) async {
    List<Placemark> placemarks =
        await placemarkFromCoordinates(position.latitude, position.longitude);
    print(placemarks);
    Placemark place = placemarks[0];
    setState(() {
      address =
          '${place.street}, ${place.subLocality}, ${place.locality}, ${place.postalCode}, ${place.country}';
    });
  }

UI Geocoding Flutter

Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: [
            Text(
              'Koordinat Point',
              style: TextStyle(
                fontSize: 22.0,
                fontWeight: FontWeight.bold,
              ),
            ),
            SizedBox(
              height: 10.0,
            ),
            Text(
              location,
              style: TextStyle(
                fontSize: 12.0,
                fontWeight: FontWeight.bold,
              ),
            ),
            const SizedBox(
              height: 20.0,
            ),
            const Text(
              'Address',
              style: TextStyle(
                fontSize: 22.0,
                fontWeight: FontWeight.bold,
              ),
            ),
            SizedBox(height: 10.0,),
            Text('${address}'),
            ElevatedButton(
              onPressed: () async {
                Position position = await _getGeoLocationPosition();
                setState(() {
                  location = '${position.latitude}, ${position.longitude}';
                });
                getAddressFromLongLat(position);
              },
              child: const Text('Get Koordinat'),
            ),
          ],
        ),
      ),

Sisipkan code yang ditebalkan, pada code sebelumnya.

Output Final

WhatsApp Image 2022 07 04 at 08.06.04 1
Output menampilkan alamat berdasarkan latitude dan longitude

Untuk artikel kali ini sampai disini dulu, untuk source code lengkapnya ada di link bawah ini:

https://github.com/belajarflutter-com/fluttergeo

Sumber

https://pub.dev/packages/geolocator

https://pub.dev/packages/geocoding

Tidak ada komentar:

Posting Komentar