Fix retrieving location not working on android
This commit is contained in:
parent
32793f2129
commit
275416ea3c
@ -249,43 +249,51 @@ class _MyHomePageState extends State<MyHomePage> {
|
||||
});
|
||||
}
|
||||
|
||||
Future<void> _onSearch() async {
|
||||
final http.Response response = await http.get(
|
||||
Uri.parse('https://nominatim.openstreetmap.org/search.php?q=${searchBarInput.text}&format=jsonv2'),
|
||||
headers: {'User-Agent': 'SkanTravels/1.0'}
|
||||
);
|
||||
Future<void> _onSearch() async {
|
||||
final http.Response response = await http.get(
|
||||
Uri.parse('https://nominatim.openstreetmap.org/search.php?q=${searchBarInput.text}&format=jsonv2'),
|
||||
headers: {'User-Agent': 'SkanTravels/1.0'}
|
||||
);
|
||||
|
||||
final dynamic location = jsonDecode(response.body);
|
||||
final dynamic location = jsonDecode(response.body);
|
||||
|
||||
// Move the map to the center of the first search result
|
||||
_mapController.move(
|
||||
LatLng(double.parse(location[0]['lat']), double.parse(location[0]['lon'])),
|
||||
8
|
||||
);
|
||||
// Move the map to the center of the first search result
|
||||
_mapController.move(
|
||||
LatLng(double.parse(location[0]['lat']), double.parse(location[0]['lon'])),
|
||||
8
|
||||
);
|
||||
|
||||
// Extract the bounding box and convert to LatLng
|
||||
final List<dynamic> boundingBox = location[0]['boundingbox'];
|
||||
// Extract the bounding box and convert to LatLng
|
||||
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 {
|
||||
LocationPermission permission = await Geolocator.checkPermission();
|
||||
if(permission != LocationPermission.always || permission != LocationPermission.whileInUse){
|
||||
Future<void> _getCurrentLocation() async {
|
||||
LocationPermission? permission;
|
||||
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);
|
||||
_mapController.move(LatLng(position.latitude, position.longitude), 10);
|
||||
|
||||
setState(() {
|
||||
_userPosition = LatLng(position.latitude, position.longitude);
|
||||
});
|
||||
|
||||
LatLngBounds bounds = _mapController.camera.visibleBounds;
|
||||
|
||||
_getOpenStreetMapData(LatLng(bounds.southWest.latitude, bounds.southWest.longitude),LatLng(bounds.northEast.latitude, bounds.northEast.longitude));
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Future<void> _getOpenStreetMapData(LatLng southWest, LatLng northEast) async {
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user