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
Copy Tambahkan Dependency yang diperlukan Pada File pubspec.yaml geolocator: ^9.0.0
geocoding: ^2.0.4
Copy 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" />
Copy 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...' ;
Future < Position > _getGeoLocationPosition () async {
LocationPermission permission;
serviceEnabled = await Geolocator. isLocationServiceEnabled () ;
//location service not enabled, don't continue
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 ) {
'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'),
),
],
),
),
Copy Output Latitude Dan Longitude Hasil pertama lalu kita klik izinkan untuk mengaktifkan GPS
hasil kedua 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}';
});
}
Copy 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'),
),
],
),
),
Copy Sisipkan code yang ditebalkan , pada code sebelumnya.
Output Final 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