Как настроить кнопку myLocationEnabled на картах Google?

#google-maps #flutter #flutter-layout

#google-карты #flutter #flutter-макет

Вопрос:

Мне нужно создать кнопку, которая будет показывать мне текущее местоположение пользователя. Вот почему я использую Карты Google, в которых есть такие опции, как эта. Но мне нужно настроить кнопку myLocation, но я не знаю, как это сделать. Не могли бы вы, пожалуйста, помочь мне с этим?

Хотя я довольно новичок во Flutter: D

Ответ №1:

Я не смог найти простой способ сделать это, но поскольку во flutter все является виджетом, вы можете поместить свои карты Google в свой стек и добавить iconbutton или любую другую пользовательскую кнопку, которая вам нужна, в свой стек.

 GoogleMap(
                      onMapCreated: _onMapCreated,
                      initialCameraPosition:
                          CameraPosition(target: LatLng(0.0, 0.0)),
                      markers: markers,
                    ),
                    IconButton(
                      icon: Icon(Icons.battery_charging_full),
                      onPressed: () async {
                        final center = await getUserLocation();
                        getNearbyPlaces(center);
                        Marker myPosition = Marker(
                            markerId: MarkerId('myLocation'),
                            position: center == null
                                ? LatLng(0, 0)
                                : LatLng(center.latitude, center.longitude),
                            icon: BitmapDescriptor.fromAsset(
                                'assets/logo.png'));
                        setState(() {
                          markers.add(myPosition);
                        });
                      },
                    ),
                  ],
                )
  

Итак, то, что я здесь делаю, в основном,

У меня есть, Stack который помогает мне поставить IconButton поверх GoogleMap . Когда пользователь нажимает на эту кнопку, я добавляю новую, Marker чтобы показать текущее местоположение, на моей Set есть Markers из State , вызываемая markers , я создаю новую Marker , получая текущее местоположение пользователя и добавляя пользовательский значок к этому маркеру, а затем добавляю его в мои маркеры (Набор), чтобы отобразить его на GoogleMap.

моя функция getUserLocation:

   Future<LatLng> getUserLocation() async {
    LocationManager.LocationData currentLocation;
    final location = LocationManager.Location();
    try {
      currentLocation = await location.getLocation();
      final lat = currentLocation.latitude;
      final lng = currentLocation.longitude;
      final center = LatLng(lat, lng);
      return center;
    } on Exception {
      currentLocation = null;
      return null;
    }
  }
  

У меня есть location: ^2.1.0 пакет и я использую его как LocationManager import 'package:location/location.dart' as LocationManager;