Как программно получить текущее местоположение пользователей для загрузки на карту во флаттере

Пожалуйста помоги. Я пытаюсь заставить 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,

    )]));

  }
Другие вопросы по тегам