Fix retrieving location not working on android

This commit is contained in:
Reimar 2024-09-16 20:38:42 +02:00
parent 32793f2129
commit 275416ea3c
Signed by: Reimar
GPG Key ID: 93549FA07F0AE268

View File

@ -267,24 +267,32 @@ class _MyHomePageState extends State<MyHomePage> {
final List<dynamic> boundingBox = location[0]['boundingbox']; final List<dynamic> boundingBox = location[0]['boundingbox'];
_getOpenStreetMapData(LatLng(double.parse(boundingBox[0]), double.parse(boundingBox[2])), LatLng(double.parse(boundingBox[1]), double.parse(boundingBox[3]))); _getOpenStreetMapData(LatLng(double.parse(boundingBox[0]), double.parse(boundingBox[2])), LatLng(double.parse(boundingBox[1]), double.parse(boundingBox[3])));
} }
Future<void> _getCurrentLocation() async { Future<void> _getCurrentLocation() async {
LocationPermission permission = await Geolocator.checkPermission(); LocationPermission? permission;
if(permission != LocationPermission.always || permission != LocationPermission.whileInUse){ try {
permission = await Geolocator.requestPermission();
} catch (e) {
ScaffoldMessenger.of(context).showSnackBar(SnackBar(content: Text('Error retrieving location: $e')));
return;
} }
else{
await Geolocator.requestPermission(); if (permission != LocationPermission.always && permission != LocationPermission.whileInUse) {
ScaffoldMessenger.of(context).showSnackBar(const SnackBar(content: Text('Location permission denied')));
return;
} }
Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high); Position position = await Geolocator.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
_mapController.move(LatLng(position.latitude, position.longitude), 10); _mapController.move(LatLng(position.latitude, position.longitude), 10);
setState(() { setState(() {
_userPosition = LatLng(position.latitude, position.longitude); _userPosition = LatLng(position.latitude, position.longitude);
}); });
LatLngBounds bounds = _mapController.camera.visibleBounds; LatLngBounds bounds = _mapController.camera.visibleBounds;
_getOpenStreetMapData(LatLng(bounds.southWest.latitude, bounds.southWest.longitude),LatLng(bounds.northEast.latitude, bounds.northEast.longitude)); _getOpenStreetMapData(LatLng(bounds.southWest.latitude, bounds.southWest.longitude),LatLng(bounds.northEast.latitude, bounds.northEast.longitude));
} }
Future<void> _getOpenStreetMapData(LatLng southWest, LatLng northEast) async { Future<void> _getOpenStreetMapData(LatLng southWest, LatLng northEast) async {