Как программно получить текущее местоположение пользователей для загрузки на карту во флаттере
Пожалуйста помоги. Я пытаюсь заставить initialCameraPosition программно отображать текущее местоположение пользователя на карте. Я не хочу это жестко кодировать. У меня есть метод getCurrentLocation, но я не могу использовать результат (его широту и долготу) в качестве широты и долготы initialCameraPosition на карте.
метод getCurrentLocation
Future<Position> getCurrentPosition() async {
Position position = await Geolocator()
.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
print(position);
return position;
}
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: Stack(
children: <Widget>[
GoogleMap(
initialCameraPosition:
CameraPosition(target: LatLng(9.0765, 7.3986), zoom: 17),//these coordinates should not be hard coded
onMapCreated: _onMapCreated,
myLocationEnabled: true,
mapType: MapType.normal,
markers: _marker,
),}
1 ответ
Решение
Просто подождите, чтобы загрузить текущее местоположение пользователя;
1 хит getCurrentPosition() из init(), например
Position position;
@override
void initState() {
// TODO: implement initState
super.initState();
getCurrentPosition()
}
getCurrentPosition() async
{
position = await Geolocator()
.getCurrentPosition(desiredAccuracy: LocationAccuracy.high);
setState((){});
}
2. Теперь функция сборки будет выглядеть так:
Widget build(BuildContext context) {
return Scaffold(
backgroundColor: Colors.white,
body: position==null?CircularProgressIndicator(): Stack(
children: <Widget>[
GoogleMap( initialCameraPosition: CameraPosition(target:position.getLatLng, zoom: 17),
onMapCreated: _onMapCreated,
myLocationEnabled: true,
mapType: MapType.normal,
markers: _marker,
)]));
}