Трепещите, извлекайте местоположение, широту и долготу

#flutter #flutter-layout #flutter-dependencies #flutter-web #fluttermap

Вопрос:

В настоящее время я могу получить полное местоположение (имя места, Широта и долгота) только в одной переменной, но я хочу получить эти три параметра в отдельной переменной. Так что я могу печатать только широту, долготу или название места, если захочу.

 Future fetchLocation() async {
currentLocation = await getLocationCoordinates();
setState(() {
  location = currentLocation;
});
}

Future<Map> getLocationCoordinates() async {
loc.Location location = loc.Location();
 try {
await location.serviceEnabled().then((value) async {
  if (!value) {
    await location.requestService();
  }
});
final coordinates = await location.getLocation();
return await coordinatesToAddress(
  latitude: coordinates.latitude,
  longitude: coordinates.longitude,
   );
  } catch (e) {
  print(e);
  return null;
 }
 }

Future coordinatesToAddress({latitude, longitude}) async {
try {
Map<String, dynamic> obj = {};
final coordinates = Coordinates(latitude, longitude);
List<Address> result =
await Geocoder.local.findAddressesFromCoordinates(coordinates);
String currentAddress =
    "${result.first.locality ?? ''} ${result.first.subLocality ?? ''} 
${result.first.subAdminArea ?? ''} ${result.first.countryName ?? ''}, 
${result.first.postalCode ?? ''}";

print(currentAddress);
obj['Location'] = currentAddress;
obj['latitude'] = latitude;
obj['longitude'] = longitude;

 return obj;
  } catch (_) {
 print(_);
 return null;
}
}
 

Ответ №1:

Вы использовали зависимость geolocator: ^7.3.0 здесь вы можете найти широту и долготу, также используя эту зависимость

Комментарии:

1. Я получаю широту и долготу, но я хочу, чтобы они оба были в отдельной переменной obj[‘Местоположение’] = Текущий адрес; obj[‘широта’] = широта; obj[‘долгота’] = долгота; возврат obj;

Ответ №2:

С помощью этой функции Вы получите текущее местоположение без lat и long

 Future<Map> getLocationCoordinates() async {
loc.Location location = loc.Location();
 try {
 await location.serviceEnabled().then((value) async {
if (!value) {
await location.requestService();
  }
 });
final coordinates = await location.getLocation();
return await coordinatesToAddress(
latitude: coordinates.latitude,
longitude: coordinates.longitude,
 );
} catch (e) {
print(e);
   return null;
 }
 }
Future coordinatesToAddress({latitude, longitude}) async {
try {
 Map<String, dynamic> obj = {};
 final coordinates = Coordinates(latitude, longitude);
 List<Address> result =
  await Geocoder.local.findAddressesFromCoordinates(coordinates);
 String currentAddress =
"${result.first.locality ?? ''} ${result.first.subLocality ?? ''} 
 ${result.first.subAdminArea ?? ''} ${result.first.countryName ?? ''}, 
   ${result.first.postalCode ?? ''}";

 print(currentAddress);
  

     return currentLocation;
    } catch (_) {
     print(_);
    return null;
       }
     }